피벗 테이블이란 한 열에 분산된 값들을 모아 추출 및 정렬하고, 집계까지 할 수있는 테이블을 의미한다. 예를들어, 구매기록 테이블에서 구매 시각을 오전 오후로 분류한다면 특정 구매자들이 오전에 구매한 값의 합계와 오후에 구매한 합계를 모아서 나타내는 테이블을 피벗 테이블이라고 한다는 것이다. 말로하면 복잡하니 실습한 SQL문을 살펴보자.
-- 테스트 테이블 생성
USE sqldb ;
CREATE TABLE pivotTest
( uName CHAR(3),
season CHAR(2),
amount INT ) ;
INSERT INTO pivotTest VALUES
('김범수', '겨울', 10), ('윤종신', '여름', 15), ('김범수', '가을', 25),
('김범수', '봄', 3), ('김범수', '봄', 37), ('윤종신', '겨울', 40),
('김범수', '여름', 14), ('김범수', '겨울', 22), ('윤종신', '여름', 64) ;
SELECT * FROM pivotTest ;
-- 피벗 테이블 생성 (유저 이름 기준 정렬)
SELECT uName,
SUM(IF(season='봄', amount, 0)) AS '봄',
SUM(IF(season='여름', amount, 0)) AS '여름',
SUM(IF(season='가을', amount, 0)) AS '가을',
SUM(IF(season='겨울', amount, 0)) AS '겨울',
SUM(amount) AS '합계' FROM pivotTest GROUP BY uName ;
-- 피벗 2 (계절 기준 정렬)
SELECT season,
SUM(IF(uName='김범수', amount, 0)) AS '김범수',
SUM(IF(uName='윤종신', amount, 0)) AS '윤종신',
SUM(amount) AS '합계' FROM pivotTest GROUP BY season;
해당 실습에서는 구매자 기록에서 구매 당시 계절을 넣어 계절 별로 구매기록을 합계하는 과정으로 피벗 테이블을 만들어봤다. 어떤 열을 기준으로 잡느냐에 따라 피벗 테이블의 가독성이 달라지므로 어떤 것을 기준으로 삼을지도 중요하다.
'IT Self-study > MySQL & Database' 카테고리의 다른 글
| SQL 프로그래밍 (0) | 2025.01.11 |
|---|---|
| JOIN (2) | 2025.01.10 |
| (실습) 영화사이트 데이터베이스 구축 (0) | 2025.01.08 |
| 변수 지정 및 사용 예시 (0) | 2025.01.08 |
| 데이터 타입 변경/ MySQL 내장함수 (0) | 2025.01.08 |