자료를 특정한 그룹으로 나누어 정리하는것을 말한다.
ㄱ | ㄴ | ㄷ |
---|---|---|
1 | a | value1 |
2 | b | value2 |
3 | b | value3 |
4 | a | value5 |
case문을 사용하여
컬럼 ㄴ의 값이 b인 ㄱ을 정리한다.
select ㄱ깈
,case when ㄴ = 'b' then ㄱ as b_column
from tbl
이런식으로 쿼리문을 작성하면
ㄱ | b_column |
---|---|
1 | |
2 | 2 |
3 | 3 |
4 |
이런 피봇테이블을 얻을수있다.
여기서 데이터의 숫자를 얻으려고 한다면
select count(distinct ㄱ)
,count(distinct case when ㄴ = 'b' then ㄱ) as b_column
from tbl
count(distinct ㄱ) | b_column |
---|---|
4 | 2 |
라는 데이터 값을 얻을수있게된다.
ㄱ | ㄴ | ㄷ |
---|---|---|
1 | a | value1 |
2 | b | value2 |
3 | b | value3 |
4 | a | value5 |
1 | b | value6 |
컬럼 ㄱ과 ㄴ의 갯수를 구한다고 가정하자.
ㄱ컬럼에 중복값이 있다.
이럴경우 컬럼을 어떻게 작성하면 좋을까?
select
count(distinct if(ㄴ = 'a',ㄱ,null)) as ㄴ
from tbl
이런식으로 ㄴ의 값이 a일때 ㄱ의 값으로 치환한다면 distinct함수가 컬럼의 중복을 제거해줄것이다, 프라이머리키나 id의 값으로 치환하여 주면 중복된 데이터를 교체하는 기 편리하다
본 내용은 데이터리안 'SQL 데이터 분석 캠프 입문반' 을 수강하며 작성한 내용입니다