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
'SQL' 카테고리의 다른 글
[SQL] window 함수 (analytic SQL) (0) | 2023.03.23 |
---|---|
[SQL] 쿼리쓰는 기본 순서 (0) | 2023.03.21 |
[SQL] date_trunc() (0) | 2023.03.21 |
[SQL 시간 간격] justify_interval 과 age 사용 (0) | 2023.03.21 |
[SQL 현재 시간 표시] now(), current_timestamp, current_date, current_time (0) | 2023.03.21 |