DB/SQL오답노트
[SQL/SQL오답노트]LV3.대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
각시탈코더
2023. 4. 12. 09:59
1.문제
https://school.programmers.co.kr/learn/courses/30/lessons/151139?language=mysql
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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문을 짠다면 예상과 다른 쿼리문이 추출되게 된다. 조건을 만족시키는 것도 중요하지만 조건문이 어떤 순서로 제시되었는지 거기에 맞게 쿼리를 짜는 것도 중요하다.