a | b |
---|---|
1 | 10 |
2 | 2 |
3 | 4 |
1 | 20 |
3 | 15 |
이런 데이터가 있다고 가정한다
여기서 b를 평균을 내는것은 간단하다
하지만 내가 원하는 컬럼명은
1의평균 | 2의평균 | 3의평균 |
---|---|---|
15 | 2 | 9.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 데이터 분석 캠프 입문반' 을 수강하며 작성한 내용입니다