본문 바로가기
내일배움캠프 AI 웹 프로그래밍

내일배움캠프 74일차_SQL_Pivot Table_단축키

by thriveview 2023. 11. 6.

SQL을 할줄알면 업무에서 정말 쉬워진다. 

그 중에 하나는 데이터를 뽑아서 엑셀로 가공하지 않고, 바로 Pivot table 을 만드는 방법

 

Pivot table구조는 2개 이상의 기준으로 데이터를 집계할 때, 보기 쉽게 배열하여 보여주며 기본 구조는 아래와 같다. 

 

아래 실습을 통해서 감을 잡자. 

음식점별 시간별 주문건수 Pivot Table 뷰 만들기 (15~20시 사이, 20시 주문건수 기준 내림차순)

1. 음식점별, 시간별 주문건수 집계하기 

select a.restaurant_name,
       substring(b.time, 1, 2) hh,
       count(1) cnt_order
from food_orders a inner join payments b on a.order_id=b.order_id
where substring(b.time, 1, 2) between 15 and 20
group by 1, 2

 

2. Pivot view 구조 만들기

select restaurant_name,
       max(if(hh='15', cnt_order, 0)) "15",
       max(if(hh='16', cnt_order, 0)) "16",
       max(if(hh='17', cnt_order, 0)) "17",
       max(if(hh='18', cnt_order, 0)) "18",
       max(if(hh='19', cnt_order, 0)) "19",
       max(if(hh='20', cnt_order, 0)) "20"
from 
(
select a.restaurant_name,
       substring(b.time, 1, 2) hh,
       count(1) cnt_order
from food_orders a inner join payments b on a.order_id=b.order_id
where substring(b.time, 1, 2) between 15 and 20
group by 1, 2
) a
group by 1
order by 7 desc

 

 

 

업무 시작을 단축시켜 주는 마법의 문법 (Window Function - RANK, SUM)

Window Function 은 각 행의 관계를 정의하기 위한 함수로 그룹 내의 연산을 쉽게 만들어준다. 

#Window Function 의 기본 구조
window_function(argument) over (partition by 그룹 기준 컬럼 order by 정렬 기준)