문제 설명
다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다.
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며,
HISTORY_ID, CAR_ID, START_DATE, END_DATE는 각각
자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.
문제
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로
2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서
해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는
SQL문을 작성해주세요.
결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로
내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요.
풀이
SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(CAR_ID) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE >= '2022-08-01' AND START_DATE < '2022-11-01'
GROUP BY 1
HAVING COUNT(CAR_ID) >= 5
) AND START_DATE >= '2022-08-01' AND START_DATE < '2022-11-01'
GROUP BY 1, 2
ORDER BY 1, 2 DESC;
주의사항
서브쿼리뿐만 아니라 메인쿼리에서도 날짜 조건을 줘야 함
정렬할 때 MONTH뿐만 아니라 CAR_ID에도 정렬을 줘야 함
'[코딩테스트] > [SQL]' 카테고리의 다른 글
[프로그래머스 Lv.3] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2025.03.27 |
---|---|
[프로그래머스 Lv.3] 조건에 맞는 사용자 정보 조회하기 (0) | 2025.03.27 |
[프로그래머스 Lv.3] 조건에 맞는 사용자와 총 거래금액 조회하기 (2) | 2025.03.26 |
[프로그래머스 Lv.3] 대여 기록이 존재하는 자동차 리스트 구하기 (4) | 2025.03.26 |
[프로그래머스 Lv.3] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (1) | 2025.03.25 |