[코드카타] SQL 14 자동차 대여 기록 별 대여 금액 구하기

Data_Student·2024년 11월 4일
0

코드카타

목록 보기
21/57

[코드카타] SQL 14 자동차 대여 기록 별 대여 금액 구하기
14. 자동차 대여 기록 별 대여 금액 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/151141

문제 : CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 
      CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '트럭'인 자동차의 대여 
      기록에 대해서 대여 기록 별로 대여 금액(컬럼명: FEE)을 구하여 대여 기록 ID와 대여 금액
      리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 
      대여 금액이 같은 경우 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
#조건 1 : 대여 기간 추출
#조건 2 : 조건으로 '트럭'이고, 대여 기간에 따른 '할인율' 추출
#조건 3 : 요금 계산식 작성 및 추출
select history_id, 
       round((daily_fee * (datediff(end_date,start_date) + 1))*(100-ifnull(discount_rate,0))/100,0) fee
from
(
select *, case when (datediff(end_date,start_date) + 1) < 7 then 0
            when (datediff(end_date,start_date) + 1) < 30 then '7일 이상'
            when (datediff(end_date,start_date) + 1) < 90 then '30일 이상'
            else '90일 이상' end as discount_r
from CAR_RENTAL_COMPANY_RENTAL_HISTORY) a
join CAR_RENTAL_COMPANY_CAR b on a.car_id = b.car_id and b.car_type = '트럭'
left join CAR_RENTAL_COMPANY_DISCOUNT_PLAN c on b.car_type = c.car_type 
          and a.discount_r = c.duration_type
order by 2 desc, 1 desc ;
#생각해보기
#조건을 어떻게 붙일 수 있는지 잘 생각하기!

0개의 댓글