대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (LEVEL3)
틀린 코드
총 대여횟수가 5회 이상인 자동차들의 값을 count 했다. (월은 무의미한 값임 됨)
SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RENTAL_COUNT
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE >= '2022-08-01' AND END_DATE < '2022-11-01'
GROUP BY CAR_ID
HAVING COUNT(*) >= 5
ORDER BY MONTH(START_DATE), CAR_ID DESC
MONTH | CAR_ID | RENTAL_COUNT |
8 | 27 | 5 |
8 | 25 | 5 |
8 | 13 | 5 |
8 | 8 | 6 |
8 | 2 | 5 |
9 | 25 | 6 |
9 | 11 | 5 |
9 | 10 | 5 |
9 | 8 | 5 |
10 | 13 | 5 |
정답 코드
총 대여횟수가 5회 이상인 자동차들의 월별 자동차 대여횟수가 필요,
SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) 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 CAR_ID
HAVING COUNT(HISTORY_ID) >= 5)
AND (START_DATE >= "2022-08-01" AND START_DATE < "2022-11-01")
GROUP BY MONTH, CAR_ID
HAVING RECORDS > 0
ORDER BY MONTH, CAR_ID DESC
MONTH | CAR_ID | RECORDS |
8 | 28 | 3 |
8 | 27 | 5 |
8 | 25 | 5 |
8 | 23 | 3 |
8 | 19 | 1 |
8 | 15 | 2 |
8 | 13 | 5 |
8 | 11 | 1 |
8 | 10 | 3 |
8 | 8 | 6 |
8 | 7 | 4 |
8 | 5 | 4 |
8 | 2 | 5 |
9 | 28 | 2 |
9 | 27 | 1 |
9 | 25 | 6 |
9 | 23 | 4 |
9 | 21 | 1 |
9 | 20 | 4 |
9 | 19 | 3 |
9 | 18 | 4 |
9 | 15 | 2 |
9 | 13 | 4 |
9 | 12 | 4 |
9 | 11 | 6 |
9 | 10 | 5 |
9 | 8 | 5 |
9 | 7 | 1 |
9 | 5 | 1 |
9 | 2 | 1 |
10 | 23 | 1 |
10 | 21 | 5 |
10 | 20 | 2 |
10 | 19 | 1 |
10 | 18 | 3 |
10 | 15 | 2 |
10 | 13 | 5 |
10 | 12 | 2 |
10 | 10 | 3 |
10 | 8 | 5 |
10 | 7 | 1 |
10 | 2 | 1 |
MEMO
- 왜 서브쿼리로 더 나눠야 하는지 고민이 됐던 문제였다.
( 8월부터 10월까지 총 대여횟수가 5회 이상인 자동차들 (CAR_ID) 의 월별 자동차 ID 를 출력.)
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[JAVA 08] 네트워크 (0) | 2024.09.03 |
---|---|
[MYSQL 11] 5월 식품들의 총매출 조회하기 (1) | 2024.09.03 |
[MYSQL 09] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (1) | 2024.09.02 |
[MYSQL 07] 오랜 기간 보호한 동물(1) (0) | 2024.08.31 |
[MYSQL 06] 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2024.08.30 |