
다시 컴백했습니다.. ㅎㅎ
며칠 손을 안댔다가 다시 시작합니다!!!
답 쿼리입니다.
SELECT DISTINCT HISTORY_ID
, FLOOR(CASE WHEN DATEDIFF < 7 THEN DAILY_FEE * DATEDIFF
WHEN DATEDIFF >= 7 AND DATEDIFF < 30 THEN DAILY_FEE * (100 - 5) / 100 * DATEDIFF
WHEN DATEDIFF >= 30 AND DATEDIFF < 90 THEN DAILY_FEE * (100 - 8) / 100 * DATEDIFF
ELSE DAILY_FEE * (100 - 15) / 100 * DATEDIFF
END) AS FEE
FROM (
SELECT RH.HISTORY_ID
, CC.DAILY_FEE
, DATEDIFF(RH.END_DATE, RH.START_DATE) + 1 DATEDIFF
FROM CAR_RENTAL_COMPANY_CAR CC
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY RH ON CC.CAR_ID = RH.CAR_ID
JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN DP ON CC.CAR_TYPE = DP.CAR_TYPE
WHERE CC.CAR_TYPE = '트럭'
) AS T
ORDER BY FEE DESC, HISTORY_ID DESC
문제에 표시되어 있는 트럭의 할인율과 실제 테이블의 할인율을 달라서
좀 헤맸습니다.. 프로그래머스 수정이 시급합니다 ! 😠
또 DATEDIFF함수를 사용했는데 새로운 사실을 알았습니다.
예를 들어 2020-01-01부터 2020-01-30까지 트럭을 빌렸다고 치면 30일 동안 빌린 거잖아요? 하지만 DATEDIFF는 29를 출력해줍니다!
그러므로 계산을 해줄 때 +1를 해주어야합니당