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 정렬 기준)
'내일배움캠프 AI 웹 프로그래밍' 카테고리의 다른 글
내일배움캠프 76일차_편안했던 팀플 후기... (2) | 2023.11.20 |
---|---|
내일배움캠프 75일차_SQL_날짜 데이터 (2) | 2023.11.06 |
내일배움캠프 73일차_SQL 예상못한 데이터 값 (0) | 2023.11.06 |
내일배움캠프 72일차_SQL 실습: User Segmentation & Subquery (0) | 2023.11.06 |
내일배움캠프 71일차_여러번의 연산을 한 번의 SQL 문으로(Subquery) (0) | 2023.11.06 |