728x90
https://school.programmers.co.kr/learn/courses/30/lessons/151139#qna
어려운 문제였다. 그룹바이를 두개의 컬럼으로 걸 수 있는 능력이 있는가 묻는 문제였다. 또한 서브쿼리도 그룹바이를 써야하고 메인쿼리에서도 그룹바이를 써야하는 문제로 신선했다.
그런데 메인 쿼리에서 WHERE START_DATE>="2022-08-01" and START\_DATE<"2022-11-01
이것을 제거하면 틀렸습니다가 나오는데 이미 서브쿼리에서 다 정재된 CAR_ID가 오는것인데 왜 한 번 더 하냐면 서브쿼리에만 날짜 조건문을 붙일 시, 만약 8~10월 사이에 5건 이상이 존재하고 7월에도 대여건이 존재한다면 결과값으로 7월에 해당하는 대여건까지 나올 수 있기 때문이다.
SELECT month(start_date) as MONTH, CAR_ID, COUNT(CAR_ID) AS RECORD FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE>="2022-08-01" and START_DATE<"2022-11-01" and 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(*) >= 5
)
GROUP BY MONTH, CAR_ID
ORDER BY MONTH, CAR_ID DESC;
'프로그래머스 풀이 > Lv 3' 카테고리의 다른 글
[프로그래머스LV3] 단속카메라(C++) (3) | 2024.10.23 |
---|---|
[프로그래머스LV3] 인사고과(C++) (0) | 2024.10.23 |
[프로그래머스LV3] 순위 (C++) (0) | 2024.10.22 |
[프로그래머스 SQL] 헤비 유저가 소유한 장소 (0) | 2024.10.21 |
[프로그래머스LV3] 가장 긴 팰린드롬 (C++) (0) | 2024.10.21 |