Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ ๋งŽ์€ ์ž๋™์ฐจ๋“ค์˜ ์›”๋ณ„ ๋Œ€์—ฌ ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ

์ธ” 2023. 1. 25. 16:25

๐Ÿ“ข ๋ณธ ํฌ์ŠคํŒ…์— ํ™œ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋ฌธ์ œ ๋ฐ ์ž๋ฃŒ ์ถœ์ฒ˜๋Š”

       ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต,   
       https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle
์ž„์„ ๋ฐํž™๋‹ˆ๋‹ค.

 


โ–  ๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์–ด๋Š ์ž๋™์ฐจ ๋Œ€์—ฌ ํšŒ์‚ฌ์˜ ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก ์ •๋ณด๋ฅผ ๋‹ด์€ CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ…Œ์ด๋ธ”์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ, HISTORY_ID, CAR_ID, START_DATE,  END_DATE ๋Š” ๊ฐ๊ฐ ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก ID, ์ž๋™์ฐจ ID, ๋Œ€์—ฌ ์‹œ์ž‘์ผ, ๋Œ€์—ฌ ์ข…๋ฃŒ์ผ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Column name Type Nullable
HISTORY_ID INTEGER FALSE
CAR_ID INTEGER FALSE
START_DATE DATE FALSE
END_DATE DATE FALSE

 

๋ฌธ์ œ

CAR_RENTAL_COMPANY_RENTAL_HISTORY ํ…Œ์ด๋ธ”์—์„œ ๋Œ€์—ฌ ์‹œ์ž‘์ผ์„ ๊ธฐ์ค€์œผ๋กœ 2022๋…„ 8์›”๋ถ€ํ„ฐ 2022๋…„ 10์›”๊นŒ์ง€ ์ด ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ 5ํšŒ ์ด์ƒ์ธ ์ž๋™์ฐจ๋“ค์— ๋Œ€ํ•ด์„œ ํ•ด๋‹น ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ์›”๋ณ„ ์ž๋™์ฐจ ID ๋ณ„ ์ด ๋Œ€์—ฌ ํšŸ์ˆ˜(์ปฌ๋Ÿผ๋ช…: RECO RDS) ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ์›”์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ์›”์ด ๊ฐ™๋‹ค๋ฉด ์ž๋™์ฐจ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”. ํŠน์ • ์›”์˜ ์ด ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ 0์ธ ๊ฒฝ์šฐ์—๋Š” ๊ฒฐ๊ณผ์—์„œ ์ œ์™ธํ•ด์ฃผ์„ธ์š”.


โ–  ํ’€์ด

  ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ  

๋Œ€์—ฌ ์‹œ์ž‘์ผ์„ ๊ธฐ์ค€์œผ๋กœ 2022๋…„ 8์›”๋ถ€ํ„ฐ 2022๋…„ 10์›”๊นŒ์ง€ ์ด ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ 5ํšŒ ์ด์ƒ์ธ ์ž๋™์ฐจ๋“ค์— ๋Œ€ํ•ด์„œ

> ๋‚ ์งœ์กฐ๊ฑด (2022.08 ~ 2022.10) WHERE์ ˆ์— BETWEEN๋ฌธ๋ฒ• ์‚ฌ์šฉ

    ์ž๋™์ฐจ๋ณ„(GROUP BY CAR_ID) ์ด ๋Œ€์—ฌํšŸ์ˆ˜(COUNT(*)) ๊ฐ€ 5ํšŒ ์ด์ƒ

   ๋ฐ์ดํ„ฐ๋ฅผ GROUPํ•œ ์ง‘๊ณ„ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์กฐ๊ฑด์ด๋ฏ€๋กœ HAVING์ ˆ* ์กฐ๊ฑด1

----------------------------------------------------------------------------------------------------------------------------------

>> '์œ„ ๋ฐ์ดํ„ฐ๋“ค์— ๋Œ€ํ•ด์„œ'์ด๋ฏ€๋กœ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ž๋™์ฐจ(CAR_ID)๋ฅผ ๊ตฌํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๋ฉ”์ธ์ฟผ๋ฆฌ WHERE์ ˆ์— IN ๋ฌธ๋ฒ•์œผ๋กœ ๋„ฃ์–ด์ค€๋‹ค.

 

>>> (์ค‘์š”) WHERE์ ˆ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋ฒ”์œ„์— ํ•ด๋‹นํ•˜๋Š” CAR_ID๋ฅผ ์ถ”์ถœํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์ธ์ฟผ๋ฆฌ์—์„œ๋Š” ์กฐ๊ฑด์— ๋งž๋Š” CAR_ID ์˜ RENTAL_HISTORY๊ฐ€ ๋‹ค ์ถœ๋ ฅ๋˜๋ฏ€๋กœ ๋ฉ”์ธ์ฟผ๋ฆฌ WHERE์ ˆ์—์„œ ๋Œ€์—ฌ ์‹œ์ž‘์ผ ๊ธฐ์ค€ ๋ฒ”์œ„๋ฅผ ํ•œ๋ฒˆ๋” 2022-08 ~ 2022-10๋กœ  ์žก์•„์ค˜์•ผ ํ–ˆ๋‹ค.

  

๊ฒฐ๊ณผ๋Š” ์›”์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ                                      > ์ •๋ ฌ์กฐ๊ฑด1

์›”์ด ๊ฐ™๋‹ค๋ฉด ์ž๋™์ฐจ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ               > ์ •๋ ฌ์กฐ๊ฑด2

ํŠน์ • ์›”์˜ ์ด ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ 0์ธ ๊ฒฝ์šฐ์—๋Š” ๊ฒฐ๊ณผ์—์„œ ์ œ์™ธ       > *HAVING์ ˆ์— AND์ ˆ๋กœ ์กฐ๊ฑด2๋กœ ์ถ”๊ฐ€

 

SELECT MONTH(START_DATE) AS MONTH,
CAR_ID,
COUNT(HISTORY_ID) AS RECORDS
 FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
 WHERE CAR_ID IN (SELECT CAR_ID
                  FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                  WHERE START_DATE BETWEEN '2022-08-01 00:00:00' AND '2022-10-31 23:59:59'
                  GROUP BY 1
                  HAVING COUNT(HISTORY_ID) >= 5
                  AND COUNT(HISTORY_ID) != 0)
 AND START_DATE BETWEEN '2022-08-01 00:00:00' AND '2022-10-31 23:59:59'
 GROUP BY 1, 2
 ORDER BY 1, 2 DESC