728x90
https://school.programmers.co.kr/learn/courses/30/lessons/151141
- 할인 받기 전
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
반응형
'TIL - 프로그래밍 > SQL' 카테고리의 다른 글
[SQL] Chapter 1. SQL을 활용한 분석 (0) | 2023.07.04 |
---|---|
[프로그래머스] 상품을 구매한 회원 비율 구하기 - MySQL (0) | 2023.03.02 |
[230228] MySQL 조건문 (IF문 / 중첩 IF문 / CASE문) (0) | 2023.02.28 |
[230224] SQL - 특정 문자를 포함하는 LIKE, (0) | 2023.02.24 |
[프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - MySQL (0) | 2023.02.24 |
댓글