서브쿼리 [프로그래머스] 대여횟수가 많은 자동차들의 월별 대여 횟수 구하기 (MySQL/LV3)
출처
https://school.programmers.co.kr/learn/courses/30/lessons/151139?language=mysql
풀이
1. 대여 시작일을 기준으로 날짜 조건을 만족하면서 총 대여횟수가 5회 이상인 자동차들
- 위 조건을 먼저 서브쿼리로 작성
- DATE_FORMAT(START_DATE, "%Y-%M")로도 할 수 있지만 컬럼자체를 사용
- HAVING 절을 사용해 차량별 총 대여횟수가 5번 이상인 차량 조건
2. 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수를 출력
- 대여 시작일이 날짜 조건에 만족하는 차 중, 위에서 구한 서브쿼리에 해당하는 행을 구함
- GROUP BY를 월별, 자동차 ID 별 총 대여횟수를 구함
- 이때, COUNT(*)이 아닌 특정컬럼을 작성, 왜냐하면 대여횟수가 0인 컬럼은 문제에서 제외해달라 했기 때문.
SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(CAR_ID) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE BETWEEN "2022-08-01" AND "2022-10-31"
AND CAR_ID IN(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)
GROUP BY CAR_ID, MONTH(START_DATE)
ORDER BY MONTH(START_DATE) ASC, CAR_ID DESC
'프로그래머스 > SQL' 카테고리의 다른 글
ROUND 함수 [프로그래머스] LV2 노선 별 평균 역 사이 거리 조회하기.MySQL (0) | 2024.09.23 |
---|---|
COUNT(*) VS COUNT(열) [프로그래머스] Lv.2 동명 동물 수 찾기.MySQL (0) | 2024.09.13 |
MAX() 함수 [프로그래머스] Lv.2 가격이 제일 비싼 식품의 정보 출력하기.MySQL (0) | 2024.09.09 |
[프로그래머스] Lv.2 특정 물고기를 잡은 총 수 구하기.MySQL (0) | 2024.09.05 |
[프로그래머스] Lv.2 업그레이드 된 아이템 구하기 (서브쿼리).MySQL (0) | 2024.09.04 |