일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 컨버티드
- 우금캐면접
- 통계독학
- 실기1유형
- boostcourse
- 메타코드m
- 데이터분석
- sql
- 데이터넥스트레벨챌린지
- BNK저축은행
- 우금캐
- 메타코드
- 빅데이터분석기사실기
- 데이터리안
- 빅분기1유형
- 빅데이터분석기사
- 우리금융캐피탈면접
- MySQL
- 빅분기실기
- 데이터분석전문가
- 빅데이터분석기사 실기
- 투자도서
- 데이터자격증
- 데이터분석마인드셋
- 데이터분석가
- 정처기
- 투자마인드
- 빅분기 실기
- 빅분기
- 우리금융캐피탈
- Today
- Total
하파와 데이터
SQL - PIVOT 변환하기 본문
데이터를 분석하거나, 내용을 파악함에 있어서
기본적인 테이블의 구조가 불편한 경우가 있다.
세로의 형태로 놓았을때, 데이터를 더 분명하게 파악할 수 있거나,
나의 원하는 세부 항목으로 행을 만들었을때, 데이터 분석이 용이한 경우가 있다.
이럴때 우리는 PIVOT을 한다.
PIVOT을 하는 다양한 방법이 있고, PIVOT 함수가 있는 것도 같은데
데이터리안 강의에서 배운 피봇의 방법은 조금 다르다. 그 방법을 설명하고자 한다.
데이터의 내용이 아래와 같을때,
아래의 SQL구문을 사용하면,
SELECT CATEGORYID, PRICE
FROM PRODUCTS
GROUP BY CATEGORYID
아래와 같이 정보를 확인할 수 있다.
이런 형식이 아니라, 행에 각 카테고리 ID가 나오고, 금액을 확인할 수는 없을까?
이때 피봇을 진행한다.
SELECT
CASE WHEN CATEGORYID = 1 THEN PRICE ELSE NULL END AS CATEGORY1_PRICE
, CASE WHEN CATEGORYID = 2 THEN PRICE ELSE NULL END AS CATEGORY2_PRICE
, CASE WHEN CATEGORYID = 3 THEN PRICE ELSE NULL END AS CATEGORY3_PRICE
FROM PRODUCTS
-- 상기 구문에서는 번거로움을 제거하고자 CATEGORYID를 3까지만 코드 내용에 작성하였음
상기의 내용은, CASE문을 사용하여 CATEGORYID 가 1일 경우에 PRICE를 넣고, 이외의 값에는 NULL값을 넣고
동일하게 하단 줄에서는 CATEGORYID=2일 경우에, PRICE를 넣고, 이외에는 NULL
마지막 CATEGORYID=3일경우, PRICE를 넣고, 이외에는 NULL을 넣는다.
즉, 상기 처럼, 첫번째 CATEGORY1_PRICE열에서는 CATEGORY=1인 경우에는 PRICE를 넣고, 나머지는 모두 NULL로 처리해버린다. 즉 하나의 조건에 만족하는 값들만 확인할 수 있게 된 것이다.
여기서의 장점은, 집계함수를 활용할때 더 극적으로 보인다. 지금은 단순 값의 나열이지만
SUM / AVG 등의 집계함수를 사용하면, 카테고리별 합계, 평균 등의 값을 바로 확인할 수 있다.
위와같이 각 카테고리별 평균값을 확인할 수 있는 결과값을 확인할 수 있다.
'Development > SQL' 카테고리의 다른 글
SQL에서 데이터 몇개만 보기 (0) | 2024.10.18 |
---|---|
[SQL이론] DATE 형태 변형, 일자 변경 (0) | 2023.08.08 |
[SQL 이론] 숫자형, 문자형 기본함수 (0) | 2023.08.07 |
SQL 소수점 처리 (0) | 2023.07.22 |
SQL- Null 에 따른 AVG 값의 차이 (0) | 2023.07.22 |