2024년 SQL 시험 PIVOT절과 UNPIVOT절 총정리
실제 데이터와 함께 PIVOT 및 UNPIVOT 쿼리 예시를 설명하겠습니다. 먼저, 간단한 판매 데이터를 구성하고, 이 데이터를 사용하여 SQL의 PIVOT과 UNPIVOT 기능도 예저데이터와 함께 설명드릴게요!
예제 데이터 준비
아래는 간단한 sales_data 테이블입니다. 이 테이블에는 고객별로 다양한 제품의 판매량이 기록되어 있습니다.
Customer Product Quantity
Alice | Product A | 2 |
Bob | Product B | 5 |
Alice | Product B | 3 |
Carol | Product C | 4 |
Bob | Product A | 1 |
PIVOT 쿼리 예시
이제 이 데이터를 사용하여 고객별로 각 제품의 총 판매량을 요약하는 PIVOT 쿼리를 작성해 보겠습니다. 이 예시는 SQL Server 문법을 사용합니다.
SELECT Customer, [Product A], [Product B], [Product C]
FROM
(
SELECT Customer, Product, Quantity
FROM sales_data
) AS SourceTable
PIVOT
(
SUM(Quantity)
FOR Product IN ([Product A], [Product B], [Product C])
) AS PivotTable;
이 쿼리는 고객별로 Product A, Product B, Product C의 판매량을 열 형태로 요약하여 표시합니다. 결과는 다음과 같을 것입니다.
Customer Product A Product B Product C
Alice | 2 | 3 | 0 |
Bob | 1 | 5 | 0 |
Carol | 0 | 0 | 4 |
UNPIVOT 쿼리 예시
이제 PIVOT으로 요약된 데이터를 UNPIVOT을 사용하여 다시 상세한 행 형태로 변환해 보겠습니다. 이 예시 역시 SQL Server 문법을 사용합니다.
SELECT Customer, Product, Quantity
FROM
(
SELECT Customer, [Product A], [Product B], [Product C]
FROM PivotTable
) AS PivotTable
UNPIVOT
(
Quantity FOR Product IN ([Product A], [Product B], [Product C])
) AS UnpivotTable;
이 쿼리는 PIVOT된 데이터를 다시 원래의 상세한 형태로 변환합니다. 결과는 다음과 같이 됩니다.
Customer Product Quantity
Alice | Product A | 2 |
Alice | Product B | 3 |
Bob | Product A | 1 |
Bob | Product B | 5 |
Carol | Product C | 4 |
설명
- PIVOT: PIVOT 절은 특정 열의 값을 새로운 열로 변환하여 데이터를 요약하는 데 사용됩니다. 이 예제에서는 Product의 각 값(Product A, Product B, Product C)을 별도의 열로 변환하여, 각 고객별로 해당 제품의 총 판매량을 요약했습니다.
- UNPIVOT: UNPIVOT 절은 PIVOT된 요약 데이터를 다시 원래의 행 형태로 변환합니다. 이 과정에서 여러 열이 하나의 열로 합쳐지며, 각 값은 별도의 행으로 표시됩니다.
이 예시를 통해, PIVOT과 UNPIVOT을 사용하여 데이터의 형태를 변환하고, 다양한 분석 및 보고 목적에 맞게 데이터를 조작하는 방법을 이해할 수 있습니다.
쿼리 주석으로 설명!
PIVOT 쿼리 예시
-- 고객별로 각 제품의 총 판매량을 요약하는 PIVOT 쿼리
SELECT Customer, [Product A], [Product B], [Product C]
FROM
(
-- 원본 판매 데이터에서 고객, 제품, 판매량을 선택
SELECT Customer, Product, Quantity
FROM sales_data
) AS SourceTable
PIVOT
(
-- 제품별 판매량을 합산하여 각 제품을 별도의 열로 요약
SUM(Quantity) FOR Product IN ([Product A], [Product B], [Product C])
) AS PivotTable;
이 쿼리는 sales_data 테이블에서 고객별로 Product A, Product B, Product C의 판매량을 집계합니다. 집계 과정에서 SUM 함수를 사용하여 각 제품의 총 판매량을 계산하고, 이를 각각의 열로 표시합니다.
UNPIVOT 쿼리 예시
-- PIVOT으로 요약된 데이터를 다시 상세한 행 형태로 변환하는 UNPIVOT 쿼리
SELECT Customer, Product, Quantity
FROM
(
-- PIVOT 쿼리의 결과로 얻은 요약 테이블
SELECT Customer, [Product A], [Product B], [Product C]
FROM PivotTable
) AS PivotTable
UNPIVOT
(
-- 여러 열에 분산된 데이터를 'Quantity'라는 단일 열로 통합하며,
-- 'Product' 열은 각 제품 이름을 나타내는 열로 변환
Quantity FOR Product IN ([Product A], [Product B], [Product C])
) AS UnpivotTable;
UNPIVOT 쿼리는 PIVOT을 통해 요약된 데이터를 다시 원래 형태로 되돌립니다. 여기서, [Product A], [Product B], [Product C] 열이 하나의 Product 열로 통합되며, 각 값은 Quantity 열에 위치하게 됩니다. 이 과정은 요약된 데이터를 다시 상세 분석이 가능한 형태로 변환할 때 유용합니다.
이 예시들은 PIVOT과 UNPIVOT 쿼리의 기본적인 사용법을 보여주며, SQL 쿼리 작성 시 이러한 주석을 추가함으로써 쿼리의 이해를 돕고, 유지 보수를 용이하게 할 수 있습니다.
'실무 좀 잘하고 싶다. > 자격증공부' 카테고리의 다른 글
SQLD 기출 문제 HAVING 절 낱낱이 파헤쳐 보기 (0) | 2024.08.19 |
---|---|
2024년 SQLD, 개발자, SQL전문가 시험일정 (0) | 2024.01.14 |
SQLD 기출문제 COUNT NULL 계산 총정리 (0) | 2023.12.22 |
SQLD 자격증 스키마 관련 자세히 (0) | 2023.11.08 |
2024년 SQLD SQLP 검정과목 변경과 검정방법 (0) | 2023.10.18 |