๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers - SQL

[MySQL/PGS] Lv.4 : ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก ๋ณ„ ๋Œ€์—ฌ ๊ธˆ์•ก ๊ตฌํ•˜๊ธฐ ๐Ÿฅต

by xxilliant 2025. 5. 9.
728x90
๋ฐ˜์‘ํ˜•

 

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;

 

๊ทธ๋ž˜๋„ ํ•ด๊ฒฐํ•˜๋‹ˆ ๋ฟŒ๋“ฏ-!

728x90
๋ฐ˜์‘ํ˜•