[프로그래머스]자동차 대여 기록 별 대여 금액 구하기

김준석·2024년 1월 14일

코딩테스트 - SQL

목록 보기
25/96

문제

https://school.programmers.co.kr/learn/courses/30/lessons/151141

풀이 코드

WITH truck_FEE AS( #트럭 데일리 가격,렌탈일 수, 할인율
    SELECT B.HISTORY_ID, A.CAR_TYPE, A.DAILY_FEE,
        DATEDIFF(B.END_DATE, B.START_DATE)+1 AS RENTAL_DATE,
        CASE
            WHEN DATEDIFF(B.END_DATE, B.START_DATE)+1 >= 90 THEN 0.85
            WHEN DATEDIFF(B.END_DATE, B.START_DATE)+1 >= 30 THEN 0.92
            WHEN DATEDIFF(B.END_DATE, B.START_DATE)+1 >= 7 THEN 0.95
            ELSE 1
        END AS DISCOUNT_RATE
    
    FROM CAR_RENTAL_COMPANY_CAR A 
        RIGHT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY B
        ON A.CAR_ID = B.CAR_ID
        INNER JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN C
        ON A.CAR_TYPE = C.CAR_TYPE
    WHERE A.CAR_TYPE ='트럭'
    GROUP BY 1
)
SELECT HISTORY_ID, CAST(RENTAL_DATE*DAILY_FEE*DISCOUNT_RATE AS SIGNED)AS FEE
FROM truck_FEE
ORDER BY 2 DESC, 1 DESC

후기

나는 아래 사진처럼
HISTORY_ID, CAR_TYPE, DAILY_FEE, 렌탈일 수, DISCOUNT_RATE 부분을 CTE로 만들고 추출 부분에서 금액부분만 계산하는 코드를 작성했다.

CASE WHEN절에서 >=7 부분 부터 작성하니까 원하는 결과물이 안나왔었다.
같은 컬럼에 대해서 N 이상을 구할때는 큰 값부터 작성해야겠다.

0개의 댓글