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문을 짠다면 예상과 다른 쿼리문이 추출되게 된다. 조건을 만족시키는 것도 중요하지만 조건문이 어떤 순서로 제시되었는지 거기에 맞게 쿼리를 짜는 것도 중요하다.