개발/부트캠프

사전캠프 : SQL 4

EJ EJ 2024. 11. 22. 17:06

1.Subquery : 여러번의 연산 진행, Query 안에 sub 로 들어간 구문

ex)

select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time
from 
(
select order_id, restaurant_name, food_preparation_time-25 over_time
from food_orders
) a

 

2.JOIN : 서로 다른 테이블에 있는 데이터 조회하기

ex)

 -LEFT JOIN
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명

-INNER JOIN
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명

 

<문제>

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

     - 평균 음식 주문 금액 기준 : 5,000 이하 / ~10,000 / ~30,000 / 30,000 초과

     - 평균 연령 : ~ 20대 / 30대 / 40대 / 50대 이상

A :

SELECT restaurant_name,

               case when pp<=5000 then 'group1'

                         when pp>5000 and pp<=10000 then 'group2'

                         when pp>10000 and pp<=30000 then 'group3'

                         when pp>30000 then 'group4' end "평균주문금액그룹",

               case when aa<=29 then '20대'

                        when aa BETWEEN 30 and 39 then '30대'

                        when aa BETWEEN 40 and 49 then '40대'

                        else '50대' end "평균연령그룹"

FROM

(

SELECT f.restaurant_name,

               f.price,

               c.age,

               avg(f.price) pp,

               avg(c.age) aa

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

GROUP by 1

) a

ORDER by 1

'개발 > 부트캠프' 카테고리의 다른 글

사전캠프 Spring 퀘스트 1  (0) 2024.12.05
사전캠프 : SQL 5_완강  (1) 2024.11.26
사전캠프 : SQL 3  (0) 2024.11.21
사전캠프 : SQL 2  (1) 2024.11.20
사전캠프 : SQL 1  (2) 2024.11.19