[SQL 문제 풀이] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

프로그래머스 (157339)
Stupefyee's avatar
Mar 05, 2025
[SQL 문제 풀이] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
notion image
notion image
notion image
 

내가 작성한 쿼리

MySQL, Oracle

SELECT C.CAR_ID, C.CAR_TYPE, FLOOR((C.DAILY_FEE * 30) * (1 - D.DISCOUNT_RATE / 100)) AS FEE -- 30일 대여 금액을 할인율 적용 후 계산하여 FEE로 표시. FROM CAR_RENTAL_COMPANY_CAR C JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN D -- 할인 정보가 담긴 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블과 JOIN ON C.CAR_TYPE = D.CAR_TYPE AND D.DURATION_TYPE = '30일 이상' -- 대여 기간이 30일 이상인 할인 정책만 사용 LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H -- 대여 기록을 담고 있는 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블을 JOIN ON C.CAR_ID = H.CAR_ID AND H.START_DATE <= DATE '2022-11-30' -- 대여 시작일이 2022년 11월 30일 이내. AND H.END_DATE >= DATE '2022-11-01' -- 대여 종료일이 2022년 11월 1일 이후. WHERE (C.CAR_TYPE = '세단' OR C.CAR_TYPE = 'SUV') -- 자동차 종류가 '세단' 또는 'SUV' AND H.HISTORY_ID IS NULL -- 대여 기록이 없는 자동차만 (즉, 2022년 11월 1일부터 11월 30일까지 대여된 기록이 없는 자동차) AND FLOOR((C.DAILY_FEE * 30) * (1 - D.DISCOUNT_RATE / 100)) >= 500000 -- 30일 대여 금액이 50만원 이상. AND FLOOR((C.DAILY_FEE * 30) * (1 - D.DISCOUNT_RATE / 100)) < 2000000 -- 30일 대여 금액이 200만원 미만. ORDER BY FEE DESC, C.CAR_TYPE, C.CAR_ID DESC;
Share article

stupefyee