문제 출저
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;