- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 퀵테이블계산
- 특정차원
- 대시보드
- python연동
- SQL
- 채용공고
- 네이버웹툰
- 고객세분화분석
- 데이터분석가
- GROUP BY와 NULL
- 살짝보기
- Tableau
- 대시보드 체크리스트
- pmset
- 데이터분석
- SQL캠프입문반
- NULL값 있는 컬럼 정렬하기
- 아니시에이팅
- 태블로
- 데이터리안
- 리텐션
- 데이터 분석
- 4LS
- TWBX
- IF()
- SQL캠프
- mysql
- 재귀쿼리
- 데이터리안 세미나
- TWBX 7기
ThinkCatLog
[SQL] Pivot Table : 피벗 테이블 본문
목차
피벗 테이블이란?
SQL로 피벗 테이블 만들기
• 어떤 컬럼을 피벗할지 정하기
• 컬럼값 확인하기
• 쿼리 작성
예제
피벗 테이블이란?
피벗 테이블이란 Raw 데이터를 요약하기 위해 사용하는 테이블을 말한다. ‘피벗(pivot)’은 ‘축을 중심으로 회전하다’ 라는 의미를 갖고 있다. 스타트업에서 자주 사용되는 ‘피벗팅(pivoting)’이라는 용어는 기존 사업 아이템을 버리고 다른 사업 아이템으로 전환한다는 의미를 가지고 있다. 농구에서 한 발을 축으로 삼아 회전하는 동작을 ‘피봇’이라 말한다.
엑셀에서도 피벗테이블이 유용하게 사용된다. 데이터의 행이 요약되는 모습이 축을 기준으로 회전 하는 모습 같아서 피벗이라고 이름 붙인 것 같다.
피벗테이블은 복잡한 Raw 데이터를 요약하여 사람이 보기 편한 형태로 볼 수 있게 만들어준다. SQL을 이용하여 피벗 테이블을 만들 수 있다.
SQL로 피벗 테이블 만들기
피벗 테이블은 Raw 데이터를 이용하여 요약을 할 때 사용한다.
어떤 컬럼을 피벗할지 정하기
피벗 테이블을 만들기 전 중요한 과정은 데이터에서 보고 싶은 정보를 선택하는 것이다. Raw 데이터의 모든 정보를 요약하는 것에는 한계가 있기 때문이다. 쿼리를 작성하는 것보다 더 중요한 과정이라고 생각한다. 이 과정을 잘 하기 위해서는 피벗테이블을 만드려는 목적을 분명히 해야한다. 보통, 행과 열에 들어가는 값은 차원값(그룹을 구분하는 컬럼), 그룹별로 집계되는 값은 측정값으로 사용된다.
컬럼값 확인하기
쿼리를 작성하기전 컬럼에 어떤 값이 있는지 확인한 후 컬럼을 작성한다. 쿼리를 작성할 때, CASE문이나 IF()함수의 조건에 컬럼에 있는 값을 활용해야 하기 때문이다.
쿼리 작성
위의 과정이 마무리 되었다면 쿼리를 작성하여 피벗테이블을 작성한다.
예제
netflix 작품 목록 데이터를 이용하여 피벗 테이블을 작성한다.
연도별로 추가된 작품 갯수를 작품 type별(TV Show, Movie)로 나눠서 확인하려고 한다. 아래 사진과 같이 데이터를 확인하고 싶다.
먼저, 데이터에서 요약하려는 컬럼을 선택해야 한다. 두 개의 컬럼이 필요하다. type과 date_added(해당 작품이 넷플릭스에 추가된 날짜)을 이용하여 피벗테이블을 만들 수 있다.
두 컬럼에 어떤 값이 있는지 확인한다.
type 컬럼에는 Movie와 TV Show가 있으며, 추가된 연도 컬럼에는 NULL이 있고, 2008~2021년 간의 데이터가 있다. 추가된 연도의 NULL 값은 피벗 테이블을 만들때 제거하면 될 것 같다.
컬럼을 정하고 값을 확인했다면 쿼리를 작성하면 된다.
type별로 그룹을 만들어준 다음 각각의 연도별 show_id의 갯수를 세는 쿼리이다.
아래의 쿼리와 같이 쿼리를 작성해도 위의 결과에서 행열만 전환된 결과가 나온다. type 컬럼의 값이 적어서 좀더 간결하게 쿼리를 작성할 수 있다.
SQL 공부한 내용을 정리하기 위해 작성하는 글입니다. 아래의 데이터를 python을 이용하여 SQL에 저장하여 실습에 사용하였습니다.
작업환경
MySQL Server 8.2.0
MySQL Workbench 8.0.34
Python 3.11.2
사용한 데이터 : Netflix Movies and TV Shows(kaggle)
데이터 출처 :https://www.kaggle.com/datasets/shivamb/netflix-shows
참고
피벗테이블(위키백과)
'데이터 분석 > SQL' 카테고리의 다른 글
[SQL] MySQL 재귀 쿼리 (Recursive Common Table Expressions) (0) | 2024.05.02 |
---|---|
[SQL] MySQL 워크벤치 Incompatible server version 해결 (0) | 2024.03.07 |
[SQL] CASE와 IF() (1) | 2024.01.24 |
[SQL] GROUP BY는 NULL을 어떻게 처리할까? (0) | 2024.01.21 |
[SQL] ORDER BY를 했을때 NULL이 있으면 어떻게 정렬될까? (2) | 2024.01.15 |