SQL

subquery

content0474 2024. 8. 30. 14:07

이전에 했던 연산결과를 다시 이용하거나, 여러 번의 연산을 수행해야 할 때 유용함

기본 구조

(

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