
- ํ๊ณผ ์ด์ ๋ฐ๊พธ๋ ๊ธฐ๋ฅ์ด๋ค
- PIVOT ์ ์ธ๋ก๋ก ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก ํํ๋ก ์ง๊ณํ ๋ ์ฌ์ฉํ๊ณ , UNPIVOT ์ ๊ฐ๋ก๋ก ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ก ํํ๋ก ๋ณดํต PIVOT ๋ฐ์ดํฐ๋ฅผ ๋ถ์ ํ๋ ค ํ ๋ ์ฌ์ฉํ๋ค
1) LONG DATA (Tidy data)
| ์ด๋ฆ | ๊ณผ๋ชฉ | ์ ์ |
|---|---|---|
| ์ง์ค | ์ํ | 95 |
| ๋ฏธํ | ์ผ๋ณธ์ด | 50 |
| ์์ | ์ค๊ตญ์ด | 90 |
| ์ธ์ | ์ฒด์ก | 80 |
| ๋ฏธ์ง | ์์ด | 75 |
| ๋ฏผ์ฑ | ์ํ | 58 |
| ์ง์ค | ์ฒด์ก | 100 |
| ๋ฏผ์ฑ | ์ผ๋ณธ์ด | 100 |
2) WIDE DATA (Cross table)
| ์ด๋ฆ | ์ํ | ์ผ๋ณธ์ด | ์ค๊ตญ์ด | ์ฒด์ก | ์์ด |
|---|---|---|---|---|---|
| ์ง์ค | 95 | 100 | |||
| ๋ฏธํ | 50 | ||||
| ์์ | 90 | ||||
| ๋ฏธ์ง | 75 | ||||
| ์ธ์ | 80 | ||||
| ๋ฏผ์ฑ | 58 | 100 |
1) PIVOT : LONG DATA -> WIDE DATA
2) UNPIVOT : WIDE DATA -> LONG DATA


์์๋ก ๋ง๋ ํ
์ด๋ธ

DATA PIVOT
์์ 1) ์ง๊ธ๋ณ ์ข์ํ๋ ๋ฒ๊ฑฐ ์ธ์ ์ง๊ณ
SELECT *
FROM (
SELECT EMP_ID, JOB_TITLE, BURGER_NAME
FROM MCDONALDS
)
PIVOT (
COUNT(EMP_ID)
FOR JOB_TITLE IN ('์ ์ฅ' AS ์ ์ฅ,
'๋งค๋์ ' AS ๋งค๋์ ,
'ํ๋ฆฌ๋' AS ํ๋ฆฌ๋,
'๊ทธ๋ฆด' AS ๊ทธ๋ฆด,
'์นด์ดํฐ' AS ์นด์ดํฐ)
);

์์ 2) ๋น ๋งฅ, ์ํ์ด, ๋ฒ ํ ๋ ์ค ์ง๊ธ๋ณ๋ก ์ข์ํ๋ ๋ฒ๊ฑฐ ์ธ์ ์ง๊ณ
SELECT *
FROM (
SELECT EMP_ID, JOB_TITLE, BURGER_NAME
FROM MCDONALDS
)
PIVOT (
COUNT(EMP_ID)
FOR BURGER_NAME IN ('๋น
๋งฅ' AS ๋น
๋งฅ,
'๋งฅ์คํ์ด์ ์ํ์ด ๋ฒ๊ฑฐ' AS ์ํ์ด,
'๋ฒ ์ด์ปจ ํ ๋งํ ๋๋ญ์ค' AS ๋ฒ ํ ๋)
);

DATA UNPIVOT
SELECT BURGER_NAME, JOB_TITLE, EMP_COUNT
FROM (
SELECT *
FROM (
SELECT EMP_ID, JOB_TITLE, BURGER_NAME
FROM MCDONALDS
)
PIVOT (
COUNT(EMP_ID)
FOR JOB_TITLE IN ('์ ์ฅ' AS ์ ์ฅ,
'๋งค๋์ ' AS ๋งค๋์ ,
'ํ๋ฆฌ๋' AS ํ๋ฆฌ๋,
'๊ทธ๋ฆด' AS ๊ทธ๋ฆด,
'์นด์ดํฐ' AS ์นด์ดํฐ)
)
)
UNPIVOT (
EMP_COUNT FOR JOB_TITLE IN (์ ์ฅ, ๋งค๋์ , ํ๋ฆฌ๋, ๊ทธ๋ฆด, ์นด์ดํฐ)
)
ORDER BY BURGER_NAME, JOB_TITLE;
์ด๋ ๊ฒ ๋ฒ๊ฑฐ๋ง๋ค ๊ฐ ์ง๊ธ๋ณ๋ก ๋ค์ LONG DATA๋ก ๋ณํ ์์ผ์ค ๊ฑธ ๋ณผ ์ ์์. 100ํ์ด ๋๊ฒ๋์์ ์ง๋ฆ. ์ผ๋ฐ์ ์ผ๋ก ์ง๊ณํ ๋๋ PIVOT ์ฐ๋ ๊ฒ ์ข๊ณ PIVOT์ผ๋ก ์ด๋ก ๋ฐ๊พผ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ถ์ํ ๋ UNPIVOT ์ฐ๋ฉด ์ข์ ๊ฑฐ ๊ฐ์