어떤 DB (데이터베이스)던지, 표준 SQL 문법을 지원하기 때문에 특정 컬럼의 값이 null 일때의 처리는 동일한 구문으로 할 수 있다.
예를 들어 아래와 같이 테이블이 있다고 가정을 하면,
create table tbl01 (
col1 varchar,
col2 varchar
)
col1 의 값을 출력하는데, col1의 값이 null 인경우 'none' 이라는 문자열로 출력하기를 원한다고 하면 아래와 같이 case when 구문으로 처리하면 어떤 db 에서든지 작동한다.
select case when col1 is null then 'none' else col1 end as new_col1, col2
from tbl01
하지만, sql 문장이 길어져서 간결하게 만들려고 할 때에는 presto (athena)에서 지원하는 함수(function)으로 간결하게 만들 수 있다.
(1) if 함수
select if(col1 is null, 'none', col1) as new_col1, col2
if 함수는 첫번째 파라메터의 값이 true 이면, 두번째 파라메터 값을
false 이면 세번째 파라메터 값을 반환한다.
(2) coalesce 함수
select coalesce(col1, 'none') as new_col1, col2
coalesce 함수는 (첫번째 파라메터의 값이 null 이면 두번째 파라메터 값을, null 이 아니면 원래의 값을 반환한다.
'분석 > 데이터분석' 카테고리의 다른 글
[redash] 쿼리에서 필터 사용법 (filter, multi-filter) (0) | 2022.06.07 |
---|---|
[SQL] 주단위 집계 꼭!! 주의해야할 점 (presto, athena) (0) | 2022.06.03 |
[SQL] 날짜 차이 계산하기 (presto, athena) (0) | 2022.05.23 |
[SQL] 주단위 집계 꼭!! 주의해야할 점 (MySql) (0) | 2022.05.16 |
Mysql 샘플링 (Sampling) : 랜덤 추출 (0) | 2022.04.06 |