[프로그래머스] SQL 연습 String, Date - 자동차 대여 기록별 대여 금액 구하기 Smelt Roe Sushi

데이터 분석/[SQL] 기초

[프로그래머스] SQL 연습 String, Date - 자동차 대여 기록별 대여 금액 구하기

INCHELIN 2025. 3. 14. 22:17
728x90
SELECT 
    H.HISTORY_ID,
    FLOOR(
        (DATEDIFF(H.END_DATE, H.START_DATE) + 1) * C.DAILY_FEE * 
        (1 - IFNULL(P.DISCOUNT_RATE, 0) / 100)
    ) AS FEE
FROM 
    CAR_RENTAL_COMPANY_CAR C
JOIN 
    CAR_RENTAL_COMPANY_RENTAL_HISTORY H ON C.CAR_ID = H.CAR_ID
LEFT JOIN 
    CAR_RENTAL_COMPANY_DISCOUNT_PLAN P 
    ON C.CAR_TYPE = P.CAR_TYPE
    AND (
        (DATEDIFF(H.END_DATE, H.START_DATE) + 1 >= 90 AND P.DURATION_TYPE = '90일 이상') OR
        (DATEDIFF(H.END_DATE, H.START_DATE) + 1 >= 30 AND DATEDIFF(H.END_DATE, H.START_DATE) + 1 < 90 AND P.DURATION_TYPE = '30일 이상') OR
        (DATEDIFF(H.END_DATE, H.START_DATE) + 1 >= 7 AND DATEDIFF(H.END_DATE, H.START_DATE) + 1 < 30 AND P.DURATION_TYPE = '7일 이상')
    )
WHERE 
    C.CAR_TYPE = '트럭'
ORDER BY 
    FEE DESC,
    H.HISTORY_ID DESC
728x90