TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

[SQLD] PIVOT / UNPIVOT (보강-2)

by 기록자_Recordian 2024. 3. 1.
728x90
반응형
기존내용
 

SQLD 2과목 SQL 활용 - PIVOT 절과 UNPIVOT 절

서브쿼리 집합연산자 그룹 함수 윈도우 함수 TOP N 쿼리 계층형 질의와 셀프 조인 PIVOT 절과 UNPIVOT 절 정규 표현식 ※ 자료출처: 데이터 산업 진흥원(K-DATA) & 마이크로소프트 시작하기에 앞서.. 해

puppy-foot-it.tistory.com


PIVOT / UNPIVOT (데이터의 구조를 변경하는 기능)
출처: 홍쌤의 데이터랩 유튜브

 

[PIVOT 관련 내용 참고]

 

[SQLD] PIVOT(보강)

해당 범위는 SQLD 2024년에 추가된 범위라 기존 내용이 많이 부족하여 추가하였습니다. 기존내용 SQLD 2과목 SQL 활용 - PIVOT 절과 UNPIVOT 절 서브쿼리 집합연산자 그룹 함수 윈도우 함수 TOP N 쿼리 계층

puppy-foot-it.tistory.com


■ UNPIVOT

- WIDE 데이터를 LONG 데이터로 변경하는 문법

- STACK 컬럼: 이미 UNSTACK 되어 있는 여러 컬럼을 하나의 컬럼으로 STACK 시 새로 만들 컬럼 이름 (사용자 정의)

- UNSTACK 컬럼: 교차표에서 셀 자리 (VALUE) 값을 하나의 컬럼으로 표현하고자 할 때 새로 만들 컬럼명 (사용자 정의)

- 값1, 값2, ...: 실제 UNSTACK 되어 있는 컬럼 이름들

 

 

[SQL 문]

SELECT *
FROM 테이블 명 또는 서브쿼리
UNPIVOT (VALUE 컬럼명 FOR STACK 컬럼명 IN (값1, 값2, ...));

 

SELECT *
FROM SALES
UNPIVOT (CNT FOR 년도 IN ("2008", "2009", ...));

※ 만약 컬럼이 숫자형이면 쌍따옴표(") 로 묶어서 전달


예제. 아래 테이블을 생성 후 STACK 처리하는 SQL문 작성

 

[아래]

 

TAB DAY_SALES

DAY 오전 오후
01 10 20
02 39 45
03 13 24

 

[SQL 문]

SELECT *
FROM DAY_SALES
UNPIVOT (구매건수 FOR 시간대 IN (오전, 오후));

※ 컬럼명은 대명사이므로, 쌍따옴표 붙으면 안 됨(연도 같은 숫자형 제외)

 

DAY 시간대 구매건수
01 오전 10
01 오후 20
02 오전 39
02 오후 45
03 오전 13
03 오후 24

[출처]

홍쌤의 데이터 랩 유튜브

 

728x90
반응형