(프로그래머스) LV4 자동차 대여 기록 별 대여 금액 구하기

chaechae·2023년 1월 18일
0

코딩테스트(SQL) 

목록 보기
5/22
post-thumbnail

LV4 자동차 대여 기록 별 대여 금액 구하기

문제 )
CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '트럭'인 자동차의 대여 기록에 대해서 대여 기록 별로 대여 금액(컬럼명: FEE)을 구하여 대여 기록 ID와 대여 금액 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
(자세한 문제내용과 테이블내용은 프로그래머스에 있습니다.)

#  자동차 대여기록 기준으로 사용 기간과 요금을 한테이블로 결합

with truck AS (
        SELECT a.history_id AS HISTORY_ID
            , a.car_id
            , b.car_type
            , b.daily_fee
            , DATEDIFF(end_date, start_date)+1 as daydiff
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY  a
            LEFT JOIN CAR_RENTAL_COMPANY_CAR b ON a.car_id = b.car_id
            )
            
# 할인율 적용 7일 이상 5% / 30일 이상 8% / 90일 이상 15% 

SELECT HISTORY_ID
    , ROUND(CASE WHEN daydiff < 7 THEN daily_fee*daydiff
                 WHEN daydiff < 30 THEN (daily_fee-(daily_fee*0.05))*daydiff
                 WHEN daydiff < 90 THEN (daily_fee-(daily_fee*0.08))*daydiff 
                 ELSE (daily_fee-(daily_fee*0.15))*daydiff END,0)  AS FEE 
FROM truck
WHERE car_type ='트럭'
ORDER BY FEE DESC , HISTORY_ID DESC


회고

  • 굳이 결합할 필요가 없는경우, 필요한 정보만 간단히 메모해놓자.
    할인율 정보가 들어간 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블의 경우 굳이 JOIN시킬 필요가 없고 '트럭'에 해당하는 할인조건만 뽑아서 메모해도 됬었습니다. 시나리오 과정을 요약하면 다음과 같습니다.
  1. 자동차 대여기록(HISTORY) 기준으로 사용 기간(daydiff)과 요금(daily_fee)을 한테이블로 결합 (PK:car_id)
  2. 트럭에 해당하는 차만 뽑아서 문제에서 제시된 할인율을 적용
profile
게임 혹은 다양한 컨텐츠가 있는 곳을 좋아합니다. 시리즈를 참고하시면 편하게 글을 보실 수 있습니다🫠

0개의 댓글