본문 바로가기

반응형
반응형

문제

CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬해주세요.

구조

CAR_RENTAL_COMPANY_CAR 테이블 : CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블 : HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.

예시


처음에 작성한 쿼리

select
    crh.car_id
from (
    select
        car_id
    from CAR_RENTAL_COMPANY_RENTAL_HISTORY
    where to_char(start_date, 'mm') = '10'
    group by car_id
) crh
join CAR_RENTAL_COMPANY_CAR cc on cc.car_id = crh.car_id
order by car_id desc

틀린 이유

전반적으로 잘 작성되었으나 문제에서 말한 세단이라는 조건을 주지 않았습니다. 세단만 나오는 것이 아닌 모든 차종이 나와서 요구조건에 적합하지 않은 쿼리가 됐습니다.


수정한 쿼리

select
    crh.car_id
from (
    select
        car_id
    from CAR_RENTAL_COMPANY_RENTAL_HISTORY
    where to_char(start_date, 'mm') = '10'
    group by car_id
) crh
join CAR_RENTAL_COMPANY_CAR cc on cc.car_id = crh.car_id
where cc.car_type = '세단'
order by car_id desc

세단이라는 조건을 줘서 모든 요구조건을 만족하는 쿼리가 완성되었습니다.

 

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/157341

반응형
댓글