본문 바로가기
문제 풀이/프로그래머스

[MYSQL 10] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

by hyeminigo 2024. 9. 3.

 

대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (LEVEL3)

 

틀린 코드

 

총 대여횟수가 5회 이상인 자동차들의 값을 count 했다. (월은 무의미한 값임 됨) 

SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RENTAL_COUNT
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE >= '2022-08-01' AND END_DATE < '2022-11-01'
GROUP BY CAR_ID
HAVING COUNT(*) >= 5
ORDER BY MONTH(START_DATE), CAR_ID DESC

 

MONTH CAR_ID RENTAL_COUNT
8 27 5
8 25 5
8 13 5
8 8 6
8 2 5
9 25 6
9 11 5
9 10 5
9 8 5
10 13 5

 

 

 

 

정답 코드

총 대여횟수가 5회 이상인 자동차들의 월별 자동차 대여횟수가 필요,

SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (SELECT CAR_ID 
                 FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
                 WHERE START_DATE >= "2022-08-01" AND START_DATE < "2022-11-01"
                 GROUP BY CAR_ID 
                 HAVING COUNT(HISTORY_ID) >= 5) 
                 AND (START_DATE >= "2022-08-01" AND START_DATE < "2022-11-01")
GROUP BY MONTH, CAR_ID
HAVING RECORDS > 0
ORDER BY MONTH, CAR_ID DESC
MONTH CAR_ID RECORDS
8 28 3
8 27 5
8 25 5
8 23 3
8 19 1
8 15 2
8 13 5
8 11 1
8 10 3
8 8 6
8 7 4
8 5 4
8 2 5
9 28 2
9 27 1
9 25 6
9 23 4
9 21 1
9 20 4
9 19 3
9 18 4
9 15 2
9 13 4
9 12 4
9 11 6
9 10 5
9 8 5
9 7 1
9 5 1
9 2 1
10 23 1
10 21 5
10 20 2
10 19 1
10 18 3
10 15 2
10 13 5
10 12 2
10 10 3
10 8 5
10 7 1
10 2 1

 

 

MEMO

- 왜 서브쿼리로 더 나눠야 하는지 고민이 됐던 문제였다. 

( 8월부터 10월까지 총 대여횟수가 5회 이상인 자동차들 (CAR_ID) 의 월별 자동차 ID 를 출력.)