subquery
이전에 했던 연산결과를 다시 이용하거나, 여러 번의 연산을 수행해야 할 때 유용함
기본 구조
(
select column
from table
) a
a는 subquery의 별명인데 다른문자나 단어로 써도 상관없다
이 subquery문은
select column
from
(
select column
from table
) a
이렇게 from 다음에 써주면 된다
식당별로 주중에는 평균 음식준비 시간 또는 평균 배달시간 중 하나라도 26분 초과이면 지연, 주말에는 둘 중 하나라도 29분 초과이면 지연으로 표기하려면?
-> subquery에서 평균 음식준비 시간과 평균 배달시간을 구하고, 그것을 이용해서 case when문으로 조건을 주면 됨
평균시간 구하는 subquery문
SELECT restaurant_name,
day_of_the_weekweek,
AVG(food_preparation_time)food_prep,
AVG(delivery_time)deliv
FROM food_orders
group by 1,2
order by 1
전체 쿼리는
SELECT restaurant_name, week, food_prep, deliv,
case when week='weekday' and food_prep>26 or deliv>26 then 'delayed'
when week='weekend' and food_prep>29 or deliv>29 then 'delayed'
else 'on time' end delay
FROM
(
SELECT restaurant_name,
day_of_the_weekweek,
AVG(food_preparation_time)food_prep,
AVG(delivery_time)deliv
FROM food_orders
group by 1,2
order by 1
)a