SQL/프로그래머스 문제풀이

[프로그래머스] GROUP BY > 대여 횟수가 많은 자동차드르이 월별 대여 횟수 구하기

너지살 2024. 5. 25. 19:29

 

 

 

문제 출저

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

문제 풀이

2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차

WHERE 절에 IN과 서브쿼리를 활용하여 CAR_ID를 선택

서브쿼리는 BETWEEN 2022-08, 2022-10 선택, CAR_ID로 그룹화하고 HAVING을 통해 5보다 큰 것을 선택한다.

 

월별 자동차 ID별 총 대여 횟수

GROUP BY로 MONTH, CAR_ID를 그룹화

총 대여 횟수를 HAVING을 통해 0보다 큰 것을 선택

 

ORDER BY를 통해 월 기준 오름차순, CAR_ID 기준 내림차순을 구현한다. 

 

 

 

SQL

SELECT 
    MONTH(START_DATE) AS MONTH, 
    CAR_ID, COUNT(HISTORY_ID) AS RECORDS
FROM 
    CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE 
    CAR_ID IN (
        SELECT CAR_ID
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
        WHERE (DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' AND '2022-10')
        GROUP BY CAR_ID
        HAVING COUNT(CAR_ID) >= 5
    ) AND (DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' AND '2022-10')
GROUP BY 
    MONTH, CAR_ID
HAVING 
    RECORDS > 0
ORDER BY 
    MONTH ASC, CAR_ID DESC;