정민교·2024년 2월 12일
0

SQL프로그래머스

목록 보기
6/25

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


-- 코드를 입력하세요

SELECT 
    MONTH(rental.start_date) as MONTH,
    rental.car_id as CAR_ID,
    COUNT(MONTH(rental.start_date)) as RECORDS
FROM (
    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
) AS rental_gt_5
JOIN (
    SELECT *
    FROM car_rental_company_rental_history
    WHERE start_date BETWEEN '2022-08-01' AND '2022-10-31'
) AS rental
    ON rental_gt_5.car_id = rental.car_id
GROUP BY MONTH(rental.start_date), rental.car_id
ORDER BY MONTH, CAR_ID DESC;

풀이

2022년 8월 1일부터 2022년 10월 31일 까지의 대여 기록이 있는 조건을 두 번 사용

저 기간 안에 대여 기록이 5번 이상인 것만 추려내고 조인을 해버리면 8월 이상 10월 이하가 아닌 tuple들도 같이 조인되기 때문이다.

profile
백엔드 개발자

0개의 댓글