1. UNPIVOT란?
UNPIVOT는 데이터베이스에서 열을 행으로 변환하는 작업을 의미합니다. 일반적으로 데이터베이스에서 테이블은 행과 열의 형태로 구성되는데, UNPIVOT을 사용하면 열로 저장된 데이터를 행으로 변환하여 보다 다양한 분석 및 쿼리 작업을 수행할 수 있습니다. UNPIVOT은 오라클에서 제공하는 기능으로, 사용자가 지정한 열을 행으로 변환해주는 역할을 합니다.
UNPIVOT을 사용하면 열의 데이터를 행으로 변환할 수 있으며, 이를 통해 데이터의 유연한 분석과 처리가 가능해집니다. 다양한 분석 작업에서 필요한 데이터 형태에 따라 UNPIVOT을 통해 데이터를 변환하여 사용할 수 있습니다. UNPIVOT을 활용하면 복잡한 분석 작업을 보다 쉽게 수행할 수 있으며, 데이터 처리의 효율성도 향상될 수 있습니다.
UNPIVOT은 오라클에서 제공하는 SQL 기능 중 하나이며, 쿼리문을 사용하여 데이터의 열과 행을 변환하는 방식으로 동작합니다. UNPIVOT을 사용하여 데이터를 효율적으로 분석하고 가공하여 사용할 수 있으므로, 데이터 처리와 분석에 많은 도움이 되는 기능입니다.
2. UNPIVOT 구문 및 사용법
UNPIVOT은 오라클에서 제공하는 SQL 기능으로, 데이터의 열을 행으로 변환하는 작업을 수행합니다. UNPIVOT 구문은 다음과 같은 형식으로 작성됩니다.
SELECT *
FROM TABLE_NAME
UNPIVOT (
NEW_COLUMN_NAME FOR OLD_COLUMN_NAME IN (COLUMN1, COLUMN2, COLUMN3)
) ;
위의 구문에서 TABLE_NAME
은 UNPIVOT을 적용할 테이블의 이름을 나타냅니다. NEW_COLUMN_NAME
은 새로 생성될 열의 이름을 정의하며, OLD_COLUMN_NAME
은 기존 열의 이름을 나타냅니다. IN
키워드를 사용하여 UNPIVOT을 적용할 기존 열들을 지정할 수 있습니다.
예를 들어, 다음과 같은 테이블이 있다고 가정해봅시다.
+---------+------+------+------+
| ID | Col1 | Col2 | Col3 |
+---------+------+------+------+
| 1 | A | B | C |
| 2 | D | E | F |
+---------+------+------+------+
위의 테이블에서 UNPIVOT을 사용하여 데이터를 변환하고자 한다면, 아래와 같이 구문을 작성할 수 있습니다.
SELECT *
FROM table_name
UNPIVOT (
value
FOR column_name IN (Col1, Col2, Col3)
) ;
이렇게 구문을 작성하면 UNPIVOT이 적용된 결과를 조회할 수 있습니다.
+----+------+-------+
| ID | Col | Value |
+----+------+-------+
| 1 | Col1 | A |
| 1 | Col2 | B |
| 1 | Col3 | C |
| 2 | Col1 | D |
| 2 | Col2 | E |
| 2 | Col3 | F |
+----+------+-------+
위의 예시에서는 ID 열이 변함없이 그대로 유지되고, Col1, Col2, Col3 열이 새로운 열의 이름으로 변환되어 출력되었습니다.
UNPIVOT을 사용하여 열을 행으로 변환할 수 있습니다. 이를 통해 원하는 형태의 데이터로 변환하여 보다 쉽고 효율적으로 분석 및 처리 작업을 수행할 수 있습니다.
3. UNPIVOT의 활용 예시
UNPIVOT은 데이터의 열을 행으로 변환하여 다양한 분석 및 처리 작업에 유용하게 활용될 수 있습니다. 아래는 UNPIVOT의 활용 예시입니다.
예시 1: 열의 값 비교와 분석
만약 다음과 같은 테이블이 있다고 가정해봅시다.
+------+-------+------+------+------+
| Year | Col1 | Col2 | Col3 | Col4 |
+------+-------+------+------+------+
| 2020 | 100 | 200 | 300 | 400 |
| 2021 | 150 | 250 | 350 | 450 |
+------+-------+------+------+------+
위의 테이블에서는 각 연도별로 Col1, Col2, Col3, Col4 열의 값이 기록되어 있습니다. 이때 UNPIVOT을 사용하여 연도와 열의 값을 비교하여 분석할 수 있습니다.
SELECT *
FROM table_name
UNPIVOT (
value
FOR column_name IN (Col1, Col2, Col3, Col4)
) ;
위의 구문을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
+------+--------+-------+
| Year | Col | Value |
+------+--------+-------+
| 2020 | Col1 | 100 |
| 2020 | Col2 | 200 |
| 2020 | Col3 | 300 |
| 2020 | Col4 | 400 |
| 2021 | Col1 | 150 |
| 2021 | Col2 | 250 |
| 2021 | Col3 | 350 |
| 2021 | Col4 | 450 |
+------+--------+-------+
이제 연도와 열 값을 비교하여 원하는 분석 작업을 수행할 수 있습니다. 예를 들어, 연도 별로 Col1과 Col2의 값을 비교하여 증감을 구할 수 있습니다.
예시 2: 데이터 집계 및 요약
또 다른 예시로, 다음과 같은 테이블이 있다고 가정해봅시다.
+------+--------+------+------+------+
| Year | Type1 | Type2| Type3| Type4|
+------+--------+------+------+------+
| 2020 | 10 | 20 | 30 | 40 |
| 2021 | 15 | 25 | 35 | 45 |
+------+--------+------+------+------+
위의 테이블에서는 각 연도별로 Type1, Type2, Type3, Type4의 값이 기록되어 있습니다. UNPIVOT을 사용하여 값들을 집계하거나 요약할 수 있습니다.
SELECT column_name, SUM(value) AS total
FROM table_name
UNPIVOT (
value
FOR column_name IN (Type1, Type2, Type3, Type4)
)
GROUP BY column_name ;
위의 구문을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
+------------+-------+
| column_name | total |
+------------+-------+
| Type1 | 25 |
| Type2 | 45 |
| Type3 | 65 |
| Type4 | 85 |
+------------+-------+
위의 예시에서는 Type1, Type2, Type3, Type4의 값을 합산하여 총합을 구하는 예시입니다. UNPIVOT을 사용하여 데이터를 집계하거나 요약할 수 있으므로, 다양한 분석 작업에서 유용하게 활용될 수 있습니다.
위의 예시들은 UNPIVOT의 활용 예시로 일부분에 불과합니다. UNPIVOT을 사용하여 데이터를 유연하게 변환하고 다양한 분석 작업에 적용할 수 있다는 것을 염두에 두고 활용해 보시기 바랍니다.