대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
Level. 3
틀린 코드에서 WHERE절 서브쿼리에서 '8~10월 사이의 대여횟수가 5 이상인 CAR_ID'를 추출하더라도 메인 쿼리에서 8~10월 날짜 조건을 안 걸어줘서 틀림
EX)
ID가 1인 자동차의 8~10월 총 대여횟수가 6이고 7월 대여횟수가 5일 때,
메인 쿼리에서 날짜 조건을 걸어주지 않으면 7월 대여횟수도 출력될 수 있음
SELECT TO_NUMBER(TO_CHAR(START_DATE, 'FMMM')) AS MONTH, CAR_ID, COUNT(TO_CHAR(START_DATE, 'FMMM')) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'MM') IN ('08', '09', '10')
GROUP BY CAR_ID
HAVING COUNT(CAR_ID) >= 5) -- 총 대여횟수가 5회이상인 자동차 중
GROUP BY TO_NUMBER(TO_CHAR(START_DATE, 'FMMM')), CAR_ID
HAVING COUNT(TO_CHAR(START_DATE, 'FMMM')) > 0
ORDER BY 1, 2 DESC
SELECT TO_NUMBER(TO_CHAR(START_DATE, 'FMMM')) AS MONTH, CAR_ID, COUNT(TO_CHAR(START_DATE, 'FMMM')) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE TO_CHAR(START_DATE, 'MM') IN ('08', '09', '10')
GROUP BY CAR_ID
HAVING COUNT(CAR_ID) >= 5) -- 8~10월 사이 총 대여횟수가 5회이상인 자동차 중
AND TO_CHAR(START_DATE, 'MM') IN ('08', '09', '10') -- 8~10월 사이 기록만 출력
GROUP BY TO_NUMBER(TO_CHAR(START_DATE, 'FMMM')), CAR_ID
HAVING COUNT(TO_CHAR(START_DATE, 'FMMM')) > 0
ORDER BY 1, 2 DESC