- 시작일이 2022-08 ~ 2022-10이면서, 총 대여횟수가 5회 이상인 값을 먼저 구한다. (이를 JOIN으로 묶어도 되지만, WHERE 절에서 CAR_ID와 비교하여 구해보았다.)
- WHERE 절에서 1번에서 말한 조건들을 적는다. 그리고 주의해야 할 점인 START_DATE의 조건을 (2022-08 ~ 2022-10) 작성해주어야 한다.
- SELECT절에서 MONTH를 새로 생성하고, CAR_ID, 그리고 CAR_ID별 총 대여 횟수를 구한 RECORDS 컬럼을 생성한다.
- GROUP BY 절에서 MONTH, CAR_ID 별로 그룹화한다.
- ORDER BY 절에서 MONTH는 오름차순, CAR_ID는 내림차순으로 정렬한다.
SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(CAR_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' AND '2022-10-31'
GROUP BY CAR_ID
HAVING COUNT(*) >= 5
)
AND START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY MONTH, CAR_ID
ORDER BY MONTH, CAR_ID DESC;
WHERE 절에서 START_DATE 조건을 명시해 주지 않아서 결과는 똑같이 나오는데, 자꾸 정답이 아니라고 나와서 답답했었다. IN으로 묶은 조건에서는 START_DATE를 적어줘서 괜찮겠지 했는데 큰 틀의 조건에서는 안적었기 때문에 정답이 아니었던 것이다. 실수하지 말자 아좌좌자장
안녕하세요! 혹시 START_DATE BETWEEN '2022-08-01' AND '2022-10-31'를 왜 한 번 더 써줘야 하는지 여쭤봐도 될까요..? 잘 모르겠습니다🥲