-
프로그래머스 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (ORACLE)SQL-코딩테스트/ORACLE 2023. 10. 25. 23:08
CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.
select c.car_id, c.car_type, round(c.daily_FEE*30*(100-p.discount_rate)/100) FEE from car_rental_company_car c join car_rental_company_rental_history h on h.car_id = c.car_id join car_rental_company_discount_plan p on p.car_type = c.car_type where c.car_id not in (select car_id from car_rental_company_rental_history where to_char(end_date,'yyyy-mm-dd') > '2022-11-01' and to_char(start_date,'yyyy-mm-dd') < '2022-12-01') and p.duration_type = '30일 이상' and c.car_type in ('세단', 'SUV') group by c.car_id, c.car_type, round(c.daily_FEE*30*(100-p.discount_rate)/100) having round(c.daily_FEE*30*(100-p.discount_rate)/100) between 500000 and 1999999 order by FEE desc, car_type, car_id desc
문제를 푸는데 너무 오랜시간이 걸린 것 같다.
특히 조건으로 2022년 11월 01일 부터 2022년 11월 30일까지를 만드는 것이 시간이 많이 걸렸는데
지금의 조건도 완벽하지는 못하다고 생각한다.
(단지 테스트 케이스가 맞아 떨어져서 맞췄다고 생각한다.)
2022년 11월 1일 ~ 2022년 11월 30일
만약에
START_DATE 컬럼 = 2022-10-10
END_DATE 컬럼 = 2022-12-05
의 데이터가 있었다면 통과하지 못했을 것 같다....
'SQL-코딩테스트 > ORACLE' 카테고리의 다른 글
프로그래머스 - 상품을 구매한 회원 비율 구하기 (ORACLE) (0) 2023.08.11 프로그래머스 - 있었는데요 없었습니다 (ORACLE) (0) 2023.08.11 프로그래머스 - 없어진 기록 찾기 (ORACLE) (0) 2023.08.11 프로그래머스 - 그룹별 조건에 맞는 식당 목록 출력하기(ORACLE) (0) 2023.08.10