[SQL] case를 활용하여 select문으로 원하는 컬럼 생성해 출력하기 (데이터 피봇팅)

hanahana·2023년 1월 14일
0

select문으로 컬럼만들기

ab
110
22
34
120
315

이런 데이터가 있다고 가정한다
여기서 b를 평균을 내는것은 간단하다
하지만 내가 원하는 컬럼명은

1의평균2의평균3의평균
1529.5

이런 데이터라면 어떤방식으로 출력하면 좋을까?

이럴때는 case문에 원하는 조건을 더 하여 이름을 출력하면 된다.
간단히 생각해 내가 출력하고싶은 조건은 1을 평균낸것, 2를 평균낸것 3을 평균낸것이다
그럼 1의 평균을 내는 방법을 생각해보자

case when a = 1 //a가 1일때
			then b //컬럼 b의 내용을 출력한다
            else null //그 외의 값은 null처리한다.
            end

이 코드로 출력되는 결과는 아래와 같다.

데이터(임시명)
10
null
null
20
null

이런 출력이 됐다면 이 조건문을 avg()로 감싸준다면 평균을 구할수 있을것이다.

그럼 각각의 컬럼을 개별로 생각하여 조건문을 작성하여보자.

select
	avg(case when a = 1 then b else null end) as 1의평균 , //,를 씀으로서 다음 컬럼을 이어서 출력할수있다. as를 이용해 컬럼의 이름도 지정해준다.
    avg(case when a = 2 then b else null end) as 2의평균 ,
    avg(case when a = 3 then b else null end) as 3의평균 ,
from tbl

이런식으로 작성한다면 내가 원하는 데이터가 출력될것이다.

본 내용은 데이터리안 'SQL 데이터 분석 캠프 입문반' 을 수강하며 작성한 내용입니다

profile
hello world

0개의 댓글