레벨: 4
언어: Mysql
해당 문제는 날짜값을 정확하게 구하면 풀 수 있는 문제라고 생각합니다
1. 대여 종료일과 시작일의 차이를 구하고
2. CAR_RENTAL_COMPANY_DISCOUNT_PLAN 해당 테이블과 조인을 하고
3. 금액과 대여차이일자와 할인율을 곱해서 금액을 구합니다
SELECT AA.HISTORY_ID
, ROUND(AA.DIFFDATE * AA.DAILY_FEE * ((100 - IFNULL(BB.DISCOUNT_RATE, 0)) / 100), 0) AS FEE
FROM (SELECT A.*
, B.HISTORY_ID
, DATEDIFF(B.END_DATE, B.START_DATE) + 1 AS DIFFDATE
, CASE WHEN DATEDIFF(B.END_DATE, B.START_DATE) + 1 >= 90 THEN '90일 이상'
WHEN DATEDIFF(B.END_DATE, B.START_DATE) + 1 >= 30 THEN '30일 이상'
WHEN DATEDIFF(B.END_DATE, B.START_DATE) + 1 >= 7 THEN '7일 이상'
END DURATION_TYPE
FROM CAR_RENTAL_COMPANY_CAR A
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B
ON (A.CAR_ID = B.CAR_ID)
WHERE A.CAR_TYPE = '트럭') AA
LEFT JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN BB
ON (AA.CAR_TYPE = BB.CAR_TYPE AND AA.DURATION_TYPE = BB.DURATION_TYPE)
ORDER BY FEE DESC, HISTORY_ID DESC