Subquery의 기본 구조
select column1, special_column from ( /* subquery */ select column1, column2 special_column from table1 ) a*Subquery가 끝나면 ()소괄호 끝에 Alias를 붙여준다(네이밍은 상관없음)
Subquery 예제1- 음식 주문시간이 25분보다 초과한 시간을 가져오기
select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time from #-25를 했을 때 0이하인 -n값이 올수 있으니if문으로 처리해준다. ( select order_id, restaurant_name, food_preparation_time-25 over_time from food_orders #음식 준비 시간에서 -25를 빼 초과한 시간을 over_time으로 as해준다. ) a
Subqury 예제2
- 음식점의 평균 단가별 segmentation 을 진행하고, 그룹에 따라 수수료 연산하기
(수수료 구간 -
~5000원 미만 0.05%
~20000원 미만 1%
~30000원 미만 2%
30000원 초과 3%)select restaurant_name, price_per_plate*ratio_of_add "수수료" from #3.최종적으로 음식점이름과 수수료율을 적용한 판매단가를 조회한다. ( 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 #2.판매단가(price_per_plate)를 불러와 CASE문을 활용해 각 수수료율을 계산 from ( select restaurant_name, avg(price/quantity) price_per_plate from food_orders #1.음식점 이름과 평균판매단가를 연산 group by 1 #음식점 이름을 기준으로 나열 ) a ) b

1.조건이 복잡해 질 경우에는 흐름을 먼저 파악하자.
2.Subquery의 첫 번째 안쪽 부분1. (a) 2. (b) 순대로 파악하자.
- 2.구문으로 만들기
- 어떤 테이블에서 데이터를 뽑을 것인가
- 어떤 컬럼을 이용할 것인가
- 어떤 조건을 지정해야 하는가
- 어떤 함수 (수식) 을 이용해야 하는가
- 2.구문으로 만들기 (해답)
1. 어떤 테이블에서 데이터를 뽑을 것인가 → from food_orders
2. 어떤 컬럼을 이용할 것인가 → restaurant_name, price, quantity
3. 어떤 조건을 지정해야 하는가 → X
4. 어떤 함수 (수식) 을 이용해야 하는가 → avg(price/quantity), case when, group by