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
'데이터 분석 > [SQL] 기초' 카테고리의 다른 글
[hackerrank] MySQL - Contest Leaderboard (0) | 2025.03.20 |
---|---|
[hackerrank] MySQL - Challenges (0) | 2025.03.20 |
[프로그래머스] SQL 연습 GROUP BY - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2025.03.11 |
[프로그래머스] SQL 연습 SUM,MAX,MIN - 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2025.03.11 |
[프로그래머스] SQL 연습 IS NULL - 경기도에 위치한 식품창고 목록 출력하기 (0) | 2025.03.11 |