데이터 분석/[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
반응형