select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time
from
(
select order_id, restaurant_name, food_preparation_time-25 over_time
from food_orders
) a
* ()안의 select, from 구하고 앞에 select from 구하기 수학이랑 동일 () 먼저 구하기 *
select restaurant_name,
price_per_plate*ratio_of_add "수수료"
from
(
select restaurant_name,
case when price_per_plate<5000 then 0.005
when price_per_plate between 5000 and 19999 then 0.01
when price_per_plate between 20000 and 29999 then 0.02
else 0.03 end ratio_of_add,
price_per_plate
from
(
select restaurant_name, avg(price/quantity) price_per_plate
from food_orders
group by 1
) a
) b
해석 순서 a -> b -> 맨 앞
a: food_orders에서 restaurant_name(별명: price_per_plate)의 평균 단가 구함
b: case when문으로 평균 단가에 따른 부가 비율을 나눔
맨 앞: price_per_plate * ratio_of_add 계산 수수료 구하기
select restaurant_name,
"시도",
avg_delivery_time,
case when avg_delivery_time<=20 then '<=20'
when avg_delivery_time between 21 and 30 then '20<x<=30'
else '>30' end delivery_time_segment
from
(
select restaurant_name,
substr(addr, 1, 2) "시도".
avg (delivery_time) avg_delivery_time
from food_orders
group by 1, 2
) a
해석 순서 a -> 맨 앞
a: food_orders에서 restaurant_name과 "시도"를 기준으로 평균 배달 시간 구하기
맨 앞: 평균 배달 시간에 따라 분류
Group by 절 헷갈림 -> 평균 배달 시간을 구할 때 레스토랑 이름과 지역을 기준으로 계산한다는 의미로 group by절 사용