1.문제
https://school.programmers.co.kr/learn/courses/30/lessons/151139?language=mysql
2.정답
SELECT
MONTH(START_DATE) as MONTH,
CAR_ID ,
count(HISTORY_ID) as RECORDS
from
CAR_RENTAL_COMPANY_RENTAL_HISTORY
where
CAR_ID in( select CAR_ID
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where MONTH(START_DATE) between 8 and 10
group by CAR_ID
having count(*)>=5)
and MONTH(START_DATE) between 8 and 10
group by MONTH , CAR_ID
order by MONTH asc, CAR_ID desc
3.오답이유
:위에서 적은 정답 코드는 MySQL로 적었다. MySQL은 컬럼의 '월' 데이터를 뽑을 때 MONTH 함수를 사용하지만, 오라클에선 어떻게 뽑아내는지 파악하지 못했다. 이건 아직도 해결된 문제가 아니라 탐구가 더 필요하다.
이외에도 문제를 볼 때 조건 파악이 중요한 걸 이 문제를 통해 배웠다. 문제에 맞춰 조건식을 추출하기 위해선
1.2022년 8월 ~ 2022년 10월 대여
2.대여 횟수 5회
두 가지의 조건이 필요한데, 조건 순서를 바꿔 SQL문을 짠다면 예상과 다른 쿼리문이 추출되게 된다. 조건을 만족시키는 것도 중요하지만 조건문이 어떤 순서로 제시되었는지 거기에 맞게 쿼리를 짜는 것도 중요하다.
'DB > SQL오답노트' 카테고리의 다른 글
[SQL/SQL오답노트]LV2.가격대 별 상품 개수 구하기 (0) | 2023.05.16 |
---|---|
[SQL/SQL오답노트]LV4.우유와 요거트가 담긴 장바구니 (0) | 2023.04.13 |
[SQL/SQL오답노트]LV4.서울에 위치한 식당 목록 출력하기 (0) | 2023.04.06 |
[SQL/SQL오답노트]LV3.조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.04.05 |
[SQL/SQL오답노트]LV4.그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2023.04.05 |