
문제
- 프로그래머스 SQL 문제
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기/레벨 3- 문제 내용 : 하단 프로그래머스 문제 [링크]
내가 작성한 Query
SELECT MONTH(START_DATE) AS MONTH , CAR_ID , COUNT(CAR_ID) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE BETWEEN '2022-08-01' AND '2022-10-31' AND 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(CAR_ID) >= 5) GROUP BY MONTH(START_DATE), CAR_ID ORDER BY MONTH ASC, CAR_ID DESC;
먼저, 1차적으로 '2022-08-01' ~ '2022-10-31' 기간동안 총 대여 회수가 5회 이상인 데이터를 필터링 해야한다. 해당 기간동안 총 대여회수가 5회 이상인 CAR_ID를 추출하기 위해 서브쿼리를 하나 작성해준다.
위에서 얻은 CAR_ID들을 가진 데이터들의 월별/차량별 대여 횟수를 구해준다. WHERE 절에 위에서 작성한 서브쿼리의 CAR_ID를 가지는 차량의 조건을 추가해준다.
WHERE 절에 START_DATE 시작일 기준으로 '2022-08-01' ~ '2022-10-31'간의 데이터를 추출하기 위한 조건을 추가해준다.
GROUP BY를 통해 월별, 차량별 데이터로 그룹핑하기 위해 MONTH(START_DATE), CAR_ID 기준으로 그룹핑한다.
COUNT(CAR_ID) AS RECORDS를 통해 차량별 대여 횟수를 추출해준다.
ORDER BY를 통해 MONTH 기준 오름차순, CAR_ID 기준으로 내림차순 정렬해준다.
