Contents
내가 작성한 쿼리


내가 작성한 쿼리
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