본문 바로가기
자격증/SQLD

[SQLD] 4-8: PIVOT 절과 UNPIVOT 절

by rnasterofmysea 2025. 2. 21.
728x90
반응형

[SQLD] 4-8: PIVOT 절과 UNPIVOT 절

SQLD 시험에서는 데이터 변환과 관련된 중요한 개념으로 PIVOTUNPIVOT 절이 출제됩니다. 이 절들은 데이터를 더 쉽게 분석하고 가독성을 높이기 위해 사용됩니다. 이번 포스트에서는 PIVOT과 UNPIVOT 절의 개념과 활용법을 SQL 예제와 함께 정리하겠습니다.


1. PIVOT 절이란?

PIVOT 절은 행(row) 데이터를 열(column)로 변환하여 데이터를 요약하는 SQL 기능입니다. 특히 집계 함수(예: SUM, AVG, COUNT 등)와 함께 사용하여 데이터 분석 및 보고서 생성에 유용합니다.

활용 예:

  • 매출 데이터 분석: 특정 월별 매출을 열로 변환하여 비교
  • 직원 급여 요약: 부서별 평균 급여를 열로 정리

2. PIVOT 기본 문법 및 예제

 

🔹 예제 테이블: EMPLOYEES

EMPLOYEE_ID  NAME  DEPARTMENT  SALARY
101 Alice HR 5000
102 Bob IT 7000
103 Carol Finance 8000
104 Dave HR 6000
105 Eve IT 7500
106 Frank Finance 8200
SELECT *
FROM (
    SELECT employee_id, department, salary
    FROM employees
) PIVOT (
    SUM(salary) FOR department IN ('HR', 'IT', 'Finance')
);

 

🔹 실행 결과

EMPLOYEE_ID  HR_SALARY  IT_SALARY  FINANCE_SALARY
101 5000 NULL NULL
102 NULL 7000 NULL
103 NULL NULL 8000
104 6000 NULL NULL
105 NULL 7500 NULL
106 NULL NULL 8200

PIVOT은 동일한 값을 가진 행을 열로 변환하여 더 쉽게 분석할 수 있도록 합니다.

 


3. UNPIVOT 절이란?

UNPIVOT 절은 열(column) 데이터를 행(row) 데이터로 변환하는 기능을 수행합니다. 즉, PIVOT의 반대 기능을 수행하며, 여러 개의 열을 단일 컬럼으로 변환하여 데이터를 쉽게 조작할 수 있도록 합니다.

 

활용 예:

  • 부서별 급여 비교: 부서별 급여를 하나의 DEPARTMENT 컬럼으로 변환
  • 다중 열 데이터를 단일 열로 정리: 월별 매출 데이터를 MONTH 컬럼으로 변환하여 분석

4. UNPIVOT 기본 문법 및 예제

 

🔹 예제 테이블: SALARY_DATA

EMPLOYEE_ID  HR_SALARY  IT_SALARY  FINANCE_SALARY
101 5000 NULL NULL
102 NULL 7000 NULL
103 NULL NULL 8000
104 6000 NULL NULL
105 NULL 7500 NULL
106 NULL NULL 8200
SELECT *
FROM (
    SELECT employee_id, hr_salary, it_salary, finance_salary
    FROM salary_data
) UNPIVOT (
    salary FOR department IN (hr_salary, it_salary, finance_salary)
);

 

🔹 실행 결과

EMPLOYEE_ID  DEPARTMENT  SALARY
101 HR 5000
102 IT 7000
103 Finance 8000
104 HR 6000
105 IT 7500
106 Finance 8200

UNPIVOT은 열을 행으로 변환하여 데이터를 더 세부적으로 분석하는 데 사용됩니다.


5. PIVOT vs UNPIVOT 비교

PIVOT 행 → 열 변환 매출 데이터를 월별로 정리
UNPIVOT 열 → 행 변환 부서별 급여 데이터를 하나의 컬럼으로 변환

 

📌 PIVOT을 사용하면 데이터를 요약하여 보기 쉽게 만들 수 있으며, UNPIVOT을 사용하면 데이터를 세부적으로 분석할 수 있습니다.

 

 

 


 

💡 도움이 되셨다면 댓글과 공감 부탁드립니다! 😊
📌 더 많은 알고리즘 풀이와 프로그래밍 자료는 블로그에서 확인하세요!
✉️ 문의나 피드백은 댓글이나 이메일로 남겨주세요.

 

 

728x90
반응형