SQL/GROUP BY

[프로그래머스 SQL] Lv.3 - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

이런개발 2025. 3. 26. 17:19

https://school.programmers.co.kr/learn/courses/30/lessons/151139

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 풀이

  1. 서브 쿼리를 이용해 대여 시작일이 2022년 8월 ~ 2022년 10월인 행들을 자동차 ID를 기준으로 그룹핑했을 때 그룹 수가 5개 이상인 자동차 ID에 해당하는 행을 필터링한다.
  2. 월과 자동차 ID를 기준으로 그룹핑한다.
  3. 월을 기준으로 오름차순 정렬하고, 자동차 ID를 기준으로 내림차순 정렬한다.
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 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
    1, 2
ORDER BY
    1, 2 DESC