BOOLEAN
%%sql
SELECT *
FROM raw_data.boolean_test;
- flag 컬럼에 정보가 담긴 테이블
- flag = True, flag is True는 동일표현
- flag is True, flag is not False 는?
%%sql
SELECT
COUNT(CASE WHEN flag = True THEN 1 END) true_cnt1,
COUNT(CASE WHEN flag is True THEN 1 END) true_cnt2,
COUNT(CASE WHEN flag is not False THEN 1 END) not_false_cnt
FROM raw_data.boolean_test;
- 트루 2개 인건 동일
- False가 아닌것에 NULL값도 포함되서 가운트됨
NULL 비교
- NULL 비교는 항상 IS 혹은 IS NOT으로 수행
- NULL 비교를 = 혹은 !=혹은 <> 으로 수행하면 잘못된 결과가 나옴
%%sql
SELECT COUNT(1)
FROM raw_data.boolean_test
WHERE flag is NULL;
%%sql
SELECT COUNT(1)
FROM raw_data.boolean_test
WHERE flag = NULL;
COALESCE
%%sql
SELECT
value,
COALESCE(value, 0)
FROM raw_data.count_test;
- NULL값을 다른 값으로 바꿔주는 함수
- NULL 대신 다른 백업값을 리턴해줌
- COALESCE(밸류가 None ro NULL이면,0으로 )
테이블의 NULL값 여부 설정
%%sql
DROP TABLE IF EXISTS adhoc.keeyong_test_null;
CREATE TABLE adhoc.keeyong_test_null (
value int NOT NULL
);
- test_null 테이블을 만들고 value 컬럼 속성에 NOT NULL을 하면 컬럼에 NULL이 오진 못함
%%sql
INSERT INTO adhoc.keeyong_test_null VALUES (NULL);
- 위 설정한 상태로 컬럼에 NULL을 넣으려고 하면 에러를 리턴해줌