JOIN과 서브쿼리를 조합해 복잡한 조건 하에 그룹별 계산 수행CASE WHEN 조건문을 통해 연령대별, 금액대별 그룹 분류 실습GROUP BY + CASE 또는 IF() 조건 + SUM/MAX 사용select cuisine_type,
max if(age='10',cnt_order,0) "10대",
max if(age='20',cnt_order,0) "20대",
max if(age='30',cnt_order,0) "30대",
max if(age='40',cnt_order,0) "40대",
max if(age='50',cnt_order,0) "50대"
from
(
select cuisine_type,
case when age between 10 and 19 then 10
when age between 20 and 29 then 20
when age between 30 and 39 then 30
when age between 40 and 49 then 40
when age between 50 and 59 then 50 end age,
count(1) cnt_order
from food_orders f inner join customers c on f.customer_id=c.customer_id
where age between 10 and 59
group by 1, 2)a
group by 1
-- ❌ 잘못된 예
MAX IF(age = '10', cnt_order, 0)
-- ✅ 올바른 예
MAX(IF(age = 10, cnt_order, 0))
select cuisine_type,
max(if(age="10",cnt_order,0)) "10대",
max(if(age="20",cnt_order,0)) "20대",
max(if(age="30",cnt_order,0)) "30대",
max(if(age="40",cnt_order,0)) "40대",
max(if(age="50",cnt_order,0)) "50대"
from
(
select f.cuisine_type,
case when age between 10 and 19 then 10
when age between 20 and 29 then 20
when age between 30 and 39 then 30
when age between 40 and 49 then 40
when age between 50 and 59 then 50 end age,
count(1) cnt_order
from food_orders f inner join customers c on f.customer_id=c.customer_id
where age between 10 and 59
group by 1, 2) a
group by 1
서브쿼리 → 조건문 → 그룹화 → 윈도우 함수로 이어지는 SQL의 흐름을 직접 체험하며 익숙해졌음
피벗 쿼리는 활용 범위가 넓어 많은 연습이 필요해보임.
윈도우 함수는 집계 결과에 순위까지 매길 수 있어 실무에 자주 쓰일 것 같음.