SQL 배우기

[SQL] 가로 데이터를 세로로 변환하기 (SQL 난이도 중)

차근차근 디지털 2024. 1. 12. 11:48

[문제] 표1과 같은 가로 형태의 테이블을 표2로 변환하시오.

 

[표1]

year q1 q2 q3 q4
2015 82000 83000 78000 83000
2016 85000 85000 80000 81000
2017 92000 81000    

 

[표2]

year quarter sales
2015 q1 82000
2015 q2 83000
: : :
2017 q4  

 

 

[아이디어]

컬럼으로 표현된 가로 기반 데이터의 특징은 데이터의 수가 고정되었다는 것입니다. (q1, q2, q3, q4)

행으로 전대할 데이터가 고정되었다면, 데이터 수와 같은 수의 일련 번호를 가진 피벗 테이블을 만들고 CROSS JOIN 하면 됩니다. 

select q.year
		, case when p.idx = 1 then 'q1'
			   when p.idx = 2 then 'q2'
			   when p.idx = 3 then 'q3'
			   when p.idx = 4 then 'q4'
		  end as quarter
		, case when p.idx = 1 then q.q1
			   when p.idx = 2 then q.q2
			   when p.idx = 3 then q.q3
			   when p.idx = 4 then q.q4
		  end as sales
from quarterly_sales as q
cross join (
					  select 1 as idx
			union all select 2 as idx
			union all select 3 as idx
			union all select 4 as idx
	
			) as p

 

 

 

참고 자료 : 데이터 분석을 위한 SQL 레시피 ([가사키 나가토, 다미야 나오토], 한빛미디어)