본문 바로가기

프로그래밍/MySQL

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

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/151139

 

프로그래머스

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

programmers.co.kr

 

풀이

WITH CAR_RENTAL_MONTH AS (
    SELECT CAR_ID
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY CRH1
    WHERE CRH1.START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
    GROUP BY CAR_ID
    HAVING COUNT(*) >= 5
),
CAR_RENTAL_INFO AS (
    SELECT MONTH(CRH2.START_DATE) MONTH, CAR_ID, COUNT(*) RECORDS
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY CRH2
    WHERE CRH2.START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
    GROUP BY CAR_ID, MONTH(CRH2.START_DATE)
)
SELECT
CRI.MONTH,
CRM.CAR_ID,
CRI.RECORDS
FROM CAR_RENTAL_MONTH CRM
JOIN CAR_RENTAL_INFO CRI
ON CRM.CAR_ID = CRI.CAR_ID
ORDER BY CRI.MONTH ASC, CRM.CAR_ID DESC

 

해설

  • 원래는 WITH 를 하나만 구현해서 하려고 했는데 실패했다.
  • 22년 8월 ~ 22년 10월 사이의 횟수가 5이상이어야하는데 WITH 를 하나만 구현할 경우 GROUP BY MONTH가 필수적이기 때문에 월별 횟수가 5회 이상인 CAR_ID로 집계가 된다.
  • 두개로 간단하게 구해서 사용하자 !