본문 바로가기
TIL - 프로그래밍/SQL

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

by chaemj97 2023. 2. 28.
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


    •  할인 받기 전
SELECT h.history_id as HISTORY_ID, round((datediff(h.end_date,h.start_date)+1)*c.daily_fee) as FEE
from CAR_RENTAL_COMPANY_RENTAL_HISTORY  as h 
join CAR_RENTAL_COMPANY_CAR as c
on h.CAR_ID = c.CAR_ID
where c.CAR_TYPE = '트럭'
order by FEE desc, HISTORY_ID desc;
  • 대여 기간이 7일 이상이 안되면 할인X
  • CAR_RENTAL_COMPANY_DISCOUNT_PLAN에 7일 이하에 대한 정보가 없기에 LEFT JOIN
SELECT h.history_id as HISTORY_ID, round((datediff(h.end_date,h.start_date)+1)*c.daily_fee*(100-ifnull(p.discount_rate,0))/100) as FEE
from CAR_RENTAL_COMPANY_RENTAL_HISTORY  as h 
join CAR_RENTAL_COMPANY_CAR as c
on h.CAR_ID = c.CAR_ID
left join CAR_RENTAL_COMPANY_DISCOUNT_PLAN as p
on c.car_type = p.car_type 
and p.duration_type = (case when (datediff(END_DATE,START_DATE)+1) >= 90 then '90일 이상'
                             when (datediff(END_DATE,START_DATE)+1) >= 30 then '30일 이상'
                             when (datediff(END_DATE,START_DATE)+1) >= 7 then '7일 이상'
                             end)
where c.CAR_TYPE = '트럭'
order by FEE desc, HISTORY_ID desc;
728x90
반응형

댓글