대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서
라고 나왔으므로, 이 자동차들을 먼저 구한다고 생각하고,해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력
: 월 별, 자동차 별 이라고 명시 되어 있으므로 GROUP BY 임을 예상한다.결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬
특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외
인데, 애초에 1번 조건에서 "총 대여 횟수가 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 MONTH(START_DATE) BETWEEN 8 AND 10 GROUP BY CAR_ID HAVING COUNT(HISTORY_ID)>=5 ) AND MONTH(START_DATE) BETWEEN 8 AND 10 GROUP BY MONTH, CAR_ID ORDER BY MONTH, CAR_ID DESC;
- IN 다음절 서브쿼리가 1번 조건 충족한 것. (+4번 조건)
- 괄호 다음 AND 조건은 2번 조건의 "해당 기간 동안의~" 를 충족
- 그 다음 줄 GROUP BY MONTH,CAR_ID 는 2번 조건의 "월별, 자동차 ID별 총 대여 횟수" 를 충족.
- 마지막 ORDER BY 는 3번 조건을 충족.
SQL 아직 많이 부족하다,,, 화이팅 ! !