본문 바로가기

매일 TIL

[내일배움캠프 7-2일] SQL 4주차

4주차 과제

문제 : 식당별 평균 음식 주문 금액과 주문자의 평균 연령을 기반으로 Segmentation 하기

  • 평균 음식 주문 금액 기준 : 5,000 / 10,000 / 30,000 / 30,000 초과
  • 평균 연령 : ~ 20대 / 30대 / 40대 / 50대 이상
  • 두 테이블 모두에 데이터가 있는 경우만 조회, 식당 이름 순으로 오름차순 정렬

select restaurant_name,

           case when avg_price <= 5000 then 'price_group1'

                   when avg_price > 5000 and avg_price <= 10000 then 'price_group2'

                   when avg_price > 10000 and avg_price <= 30000 then 'price_group3'

                   when avg_price > 30000 then 'price_group4' end price_group,

          case when avg_age < 30 then 'age_group1'

                   when avg_age >= 30 and avg_age < 40 then 'age_group2'

                   when avg_age >= 40 and avg_age < 50 then 'age_group3'

                   when avg_age >= 50 then 'age_group4' end age_group

from

(

select f.restaurant_name,

          avg(price) avg_price,

          avg(age) avg_age

from food_orders f inner join customers c on f.customer_id = c.customer_id

group by 1

) a

order by 1

 

먼저 서브쿼리부터 작성.

양쪽 테이블에 모두 있을 때만 조회이므로 inner join.

조건이 식당별이므로 group by 1, 음식 금액과 평균 연령을 조회한다.

이후 금액 기준, 연령 기준에 맞춰 segmentation해주면 끝.


오늘의 회고

우선 SQL 진도는 목표까지 완료했다.

내일 모의 기술면접이 있어서 공부하는중. 아마 정규시간이 끝나더라도 더 해야할 것 같다.

 

내일의 목표는 기술면접 준비하고 잘 하기, SQL 5주차 완강하기