Tools/- SQL

[SQL] leetcode | 1174. Immediate Food Delivery II ์˜ˆ์ œ ํ’€์ด

์Šค์œ„๋ฏผ 2025. 1. 24. 17:22

๋ฌธ์ œ

https://leetcode.com/problems/immediate-food-delivery-ii/description/

 

์ฝ”๋“œ ๋‹ต์•ˆ

๋‚˜์˜ ์ฝ”๋“œ ๋‹ต์•ˆ

select round(count(*) * 100 / (select count(distinct customer_id) from delivery), 2) as immediate_percentage
from delivery
where (customer_id, customer_pref_delivery_date) in
(select customer_id, min(order_date) over (partition by customer_id)
from delivery)

-- 7๋ถ„

 

ํƒ€ ๋ธ”๋กœ๊ทธ์—์„œ ํผ์˜จ ๋‹ต์•ˆ

select round(avg(customer_pref_delivery_date = order_date)*100,2) as immediate_percentage 
from delivery
where (customer_id, order_date) in 
	(select customer_id, min(order_date) 
    from delivery 
    group by 1) ;

๋ฌธ์ œ ํ’€์ด

๋‚ด ์ฝ”๋“œ ๋‹ต์•ˆ ํ’€์ด

where์ ˆ์—์„œ ๊ณ ๊ฐ๋ณ„ ์ฒซ๋ฒˆ์งธ ์ฃผ๋ฌธ๊ณผ ์ผ์น˜ํ•˜๋Š” ์ฃผ๋ฌธ์„ ์ฐพ๋Š”๋‹ค

๊ทธ๋ฆฌ๊ณ  select๋ฌธ์—์„œ ๋ถ„์ž๋กœ countํ•ด์ฃผ๊ณ 

๋ถ„๋ชจ๋Š” ์ƒˆ๋กœ์šด select๋ฌธ์œผ๋กœ ๊ตฌํ•ด์ค€๋‹ค.

 

ํƒ€ ๋ธ”๋กœ๊ทธ ๋‹ต์•ˆ ํ’€์ด

select customer_pref_delivery_date = order_date as immediate_percentage 
from delivery
where (customer_id, order_date) in 
	(select customer_id, min(order_date) 
    from delivery 
    group by 1)

 

customer_pref_delivery_date = order_date๊ฐ€ true์ด๋ฉด 1 / false์ด๋ฉด 0์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  avg๋ฅผ ์”Œ์šฐ๋ฉด 0.5๊ฐ€ ๋‚˜์˜ค๊ณ  ์ด๋ฅผ ๋ฐฑ๋ถ„์œจ๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.

๋А๋‚€ ์ 

ํƒ€ ๋ธ”๋กœ๊ทธ ํ’€์ด๊ฐ€ ๋ถ„๋ชจ๋ฅผ ๋”ฐ๋กœ ๊ตฌํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋” ์Šค๋งˆํŠธํ•œ ๋ฐฉ๋ฒ•์ธ ๋“ฏ?