취준이랄까../SQLD

[String, Date] 자동차 대여 기록 별 대여 금액 구하기

넹넹선생님 2023. 11. 24. 23:47
728x90
반응형

-- 코드를 입력하세요
WITH DF AS (SELECT A.CAR_ID,A.CAR_TYPE,A.DAILY_FEE,B.HISTORY_ID,B.START_DATE,B.END_DATE, (CASE WHEN DATEDIFF(B.END_DATE, B.START_DATE)+1 BETWEEN 7 AND 29 THEN '7일 이상' WHEN DATEDIFF(B.END_DATE, B.START_DATE)+1 BETWEEN 30 AND 89 THEN '30일 이상' WHEN DATEDIFF(B.END_DATE, B.START_DATE)+1 >= 90 THEN '90일 이상' END) AS DURATION 
            FROM CAR_RENTAL_COMPANY_CAR A RIGHT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B ON B.CAR_ID = A.CAR_ID
           WHERE A.CAR_TYPE = '트럭')

SELECT DD.HISTORY_ID, (ROUND((DD.DAILY_FEE*(DATEDIFF(DD.END_DATE,DD.START_DATE)+1))*(IF(C.DISCOUNT_RATE IS NULL, 1 , (100-C.DISCOUNT_RATE)/100)))) AS FEE
FROM DF DD
      LEFT JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN C ON DD.DURATION=C.DURATION_TYPE AND DD.CAR_TYPE=C.CAR_TYPE
WHERE DD.CAR_TYPE = '트럭'
ORDER BY FEE DESC, DD.HISTORY_ID DESC

728x90
반응형