
자동차 종류가 '트럭'인 자동차의 대여 기록에 대해서 대여 기록 별로 대여 금액(컬럼명: FEE)을 구하여 대여 기록 ID와 대여 금액 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
-- gpt
SELECT
h.HISTORY_ID,
FLOOR(
c.DAILY_FEE * (DATEDIFF(h.END_DATE, h.START_DATE) + 1)
* (1 - IFNULL(MAX(dp.DISCOUNT_RATE), 0) / 100)
) AS FEE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY h
JOIN CAR_RENTAL_COMPANY_CAR c
ON c.CAR_ID = h.CAR_ID
LEFT JOIN (
SELECT
CAR_TYPE,
CAST(REPLACE(DURATION_TYPE, '일 이상', '') AS UNSIGNED) AS MIN_DAYS,
CAST(REPLACE(DISCOUNT_RATE, '%', '') AS UNSIGNED) AS DISCOUNT_RATE
FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN
) dp
ON dp.CAR_TYPE = c.CAR_TYPE
AND dp.MIN_DAYS <= (DATEDIFF(h.END_DATE, h.START_DATE) + 1)
WHERE c.CAR_TYPE = '트럭'
GROUP BY h.HISTORY_ID, c.DAILY_FEE, h.START_DATE, h.END_DATE
ORDER BY FEE DESC, h.HISTORY_ID DESC;