일반적으로 데이터의 개수를 확인하고 싶을 때 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 조회
'개발자 > Database & SQL' 카테고리의 다른 글
SQL 변수 사용에 따른 속도 (0) | 2020.12.23 |
---|---|
SQL 올 해 시작 날짜, 마지막 날짜 구하기, etc... (0) | 2020.12.22 |
SQL 테이블 가로로 붙이기 (0) | 2020.12.04 |
MS-SQL 테이블 정보 확인 쿼리 (0) | 2020.11.19 |
MS SQL 반복문 INSERT 하기 (0) | 2020.11.16 |