https://school.programmers.co.kr/learn/courses/30/lessons/151141
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 4, mysql
ํ ์ด๋ธ 3๊ฐ๋ฅผ ์กฐ์ธํด์ผ ํด์ ์ ๊ฒฝ์ธ๊ฒ ์ ๋ง ๋ง๊ณ , ๋ณต์กํ ๋ฌธ์ ์๋ค.
ํ ์ธ์จ ๊ณ์ฐํ๋ ์๋ธ์ฟผ๋ฆฌ์์
์ผ ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด datediff ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๊ณ ,
ํ ์ธ์จ์ด 0์ผ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด ifnull ํจ์๋ฅผ,
๋ฌธ์์ด์์ ์ซ์๋ง ์ถ์ถํ๊ธฐ ์ํด replace, substring_index๋ฅผ
์ด๊ฑธ ๋ ์ซ์๋ก ๋ณํํ๊ธฐ ์ํ cast ํจ์๋ฅผ ์จ์ผ ํ๋ค ใ .ใ ....
์ฌ์ค Duration_type์ด 3๊ฐ๋ก ๊ณ ์ ๋์ด ์์ด์, ์ด๋ ๊ฒ๊น์ง ์ ํ๊ณ case when~์ผ๋ก ๋ ์ฝ๊ฒ ํ ์๋ ์๋๋ฐ
๊ดํ ์ค๊ธฐ๊ฐ ์๊ฒจ์, Duration_type์ ์ด๋ค ์ซ์๊ฐ ์ค๋ ์๊ด์์ด ์ ์ฉ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ผ๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ํ ์คํธ์ผ์ด์ค ํ์ธํด์ฃผ๋ ๊ฒ๋ ์์ด์ ๊ฑ ๋จธ๋ฆฌ๋ฐ๊ณ ํ ใ ใ
์ ๊ฐ๋ sql๋ฌธ์ ์๋ ํ ์ผ๋ฅผ ์๋ฃ์ด์ฃผ๋๊ฑด๊ฐ....
๋์ ํ์ด
select b.HISTORY_ID,
(DATEDIFF(b.end_date, b.start_date)+1)*
(a.daily_fee - ifnull(floor(a.daily_fee *
(
SELECT CAST(REPLACE(discount_rate, '%', '') AS UNSIGNED) as discount
FROM CAR_RENTAL_COMPANY_DISCOUNT_PLAN c
WHERE c.car_type = a.car_type
AND DATEDIFF(b.end_date, b.start_date)+1 >=
CAST(SUBSTRING_INDEX(c.duration_type, '์ผ', 1) AS UNSIGNED)
ORDER BY discount desc
LIMIT 1
) *0.01)
,0) ) as FEE
from CAR_RENTAL_COMPANY_CAR a
join CAR_RENTAL_COMPANY_RENTAL_HISTORY b
on a.car_id=b.car_id
where a.CAR_TYPE='ํธ๋ญ'
order by FEE desc, HISTORY_ID desc;
๊ทธ๋๋ ํด๊ฒฐํ๋ ๋ฟ๋ฏ-!