본문 바로가기
SQL

[SQL] case when 구문 사용과 group by

by ISLA! 2023. 3. 22.

SELECT 절에 CASE WHEN 사용하기

select *,
	case when job = 'SALESMAN' then sal end as sales_sal,
	case when job = 'MANAGER' then sal end as manager_sal
from emp e ;
  • 쓰는 법 : case when ( 조건 ) then ( 조건 별로 보고 싶은 결과 ) 
                  else (조건을 제외한 나머지 경우) then ( 그 경우 보고 싶은 결과) end as (지정할 컬럼명)
  • 위의 예시 처럼 else 를 따로 지정하지 않고, 바로 end as 로 끝내면 조건을 제외한 값은 null로 나옴! 
  • Else 를 지정하고 싶으면 else null End 로 끝냄

 

GROUP BY 절에 CASE WHEN 사용하기

select case when job = 'SALESMAN' then 'SALESMAN' 
			   else 'ohters' end as job_gubun, avg(sal), min(sal), max(sal), count(*)
from emp e 
group by case when job = 'SALESMAN' then 'SALESMAN' 
			   else 'ohters' end
  • group by 절에도 동일하게 case when 을 사용하여 원하는 값을 추출해내고, 그것을 기반으로 다양한 aggregate 함수(집계함수)를 사용할 수 있다.
  • 위의 예시에서는 job 이 salesman 인 경우와 그렇지 않은 경우를 나누어 구분하고, 각 경우에 따른 임금의 평균/최소/최댓값을 구했다.
  • 이와 같이 group by 를 통해 행 레벨을 열 레벨로 전환하며, case when과 집계함수를 사용하는 것을 >> 피봇팅이라고 함!
  • 주의 : 집계함수는 null값을 포함하지 않고 모든 계산을 수행함
728x90