자동차 대여 기록 별 대여 금액 구하기(programmers)

minllny·2024년 3월 4일

다시 컴백했습니다.. ㅎㅎ
며칠 손을 안댔다가 다시 시작합니다!!!

답 쿼리입니다.

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를 해주어야합니당

profile
SQL 끄적끄적

0개의 댓글