일반적으로 데이터의 개수를 확인하고 싶을 때 COUNT나 GROUP BY를 사용한다. NULL이 없는 경우는 문제가 없지만 NULL이 포함된 경우는 어떻게 될까?

100개의 데이터가 있는데, 그 중 60개는 '값1'이고 20개는 '값2'고, 나머지 20개는 NULL이라고 해보자.

SELECT COUNT(*)
FROM 테이블명

결과 : 100


SELECT COUNT(컬럼명)
FROM 테이블명
WHERE 컬럼명 IS NOT NULL

결과 : 80


SELECT COUNT(컬럼명)
FROM 테이블명
WHERE 컬럼명 IS NULL

결과 : 0


SELECT 컬럼명, COUNT(컬럼명)
FROM 테이블명
GROUP BY 컬럼명

결과 :
NULL  0
값1  60
값2  20

COUNT(*)를 할 때를 제외한 컬럼을 직접 COUNT 하거나 GROUP BY 하는 경우 NULL값은 아예 제외가 되어버린다.

 

이런 경우 NULL값이 몇 개인지 알고 싶다면 어떻게 해야할까?

SELECT COUNT(CASE WHEN 컬럼명 IS NULL THEN 'NULL' ELSE 컬럼명 END)
FROM 테이블명
WHERE 컬럼명 IS NOT NULL

결과 : 80


SELECT COUNT(CASE WHEN 컬럼명 IS NULL THEN 'NULL' ELSE 컬럼명 END)
FROM 테이블명
WHERE 컬럼명 IS NULL

결과 : 20


SELECT 컬럼명, COUNT(CASE WHEN 컬럼명 IS NULL THEN 'NULL' ELSE 컬럼명 END)
FROM 테이블명
GROUP BY 컬럼명

결과 :
NULL 20
값1  60
값2  20

이렇게 'NULL'로 문자열로 넣어주면 된다. 사실... NULL이라는 문자열을 채웠기 때문에 정확히는 IS NOT NULL 대신 '='를 이용해 문자열 비교를 해야하지만 이정도는 데이터베이스가 알아서 처리해준다.

 

 

Tag. Null값 조회, null값 조회, Null Count, null count, Null값 Count, null값 count, Null 조회, null 조회

+ Recent posts