Programmers Lv3
- 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
👉 문제 바로가기(Programmers)
SELECT
MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RECORDS
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE
START_DATE BETWEEN '2022-08-01' AND '2022-10-31'
GROUP BY
MONTH(START_DATE), CAR_ID
HAVING
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(*) >= 5)
ORDER BY
MONTH, CAR_ID DESC
[문제 상황]
- 최종 결과는 월별, car_id 별로 대여 횟수를 출력해야 한다.
- 하지만 월별이 아닌 전체 기간 대여 횟수가 5회 이상인 car_id만 조회해야 한다는 조건이 있다.
- 최종 결과를 조회하는 본 쿼리에서는 월별, car_id별로 그룹핑되어 있으므로 해당 조건을 바로 충족시킬 수 없다.
[해결]
- Having절에 CAR_ID로만 그룹핑하여 조건을 만족시키는 서브쿼리를 사용한다.
[회고]
- 월별 5회 이상이 아닌 전체 기간에서 5회 이상인 데이터를 출력하는 문제였는데 월별 5회라고 착각하여 자꾸 오류가 생겼다.
- 문제를 꼼꼼하게 잘 읽고 원하는 결과를 출력하도록 노력해야곘다.
- WHERE절, HAVING절에서의 서브쿼리는 활용도가 높을 것 같으므로 더 능숙해지도록 연습해야겠다.
- 조건절에 서브쿼리를 사용하는 것 대신에 변수를 생성해서 조건절에 활용할 수 있지 않을까?
'DA Study > TIL' 카테고리의 다른 글
[TIL] 날짜 구하기(datetime, date) #SQL #SQLite #solvesql (0) | 2025.02.12 |
---|---|
[TIL] SELECT절에서 서브쿼리 활용하여 비율 구하기 # MySQL # SQL (0) | 2025.02.04 |
[TIL] UNION 테이블 병합 시 각 테이블 별 정렬하기 # MySQL # SQL (0) | 2025.01.31 |
[TIL] subplot으로 두 개의 그래프 한 figure에 그리기 # python # 부트캠프 (1) | 2025.01.23 |
[TIL] MySQL 정규식 REGEXP AND, OR 조건 # MySQL # SQL (1) | 2025.01.22 |