컬럼에서 NULL값의 개수를 구하는 문제다.
NULL값인 레코드의 개수를 구하는 방법은 여러 가지가 있다.
1. 전체 개수에서 null값이 아닌 행의 개수를 빼기
COUNT(*)는 null을 포함한 모든 행의 개수를 세지만 count(컬럼)은 null 값을 제외한 행의 개수를 센다. 이 차이를 이용하여 null값인 행의 개수를 구할 수 있다.
SELECT COUNT(*)-COUNT(AGE) AS USERS FROM USER_INFO
2. CASE문 이용
CASE 문을 이용해 NULL이면 값을 1로, NULL이 아닌 값을 0으로 바꾸고 SUM함수로 합치는 방법이다.
SELECT SUM(CASE WHEN AGE IS NULL THEN 1 ELSE 0 END) AS USERS FROM USER_INFO
COUNT 함수를 사용해서도 구할 수 있다. count(컬럼)이 null을 제외하고 개수를 센다는 점을 이용하여 NULL이면 1, NULL이 아니면 NULL로 바꾸어 count 함수로 세어주면 된다.
SELECT COUNT(CASE WHEN AGE IS NULL THEN 1 ELSE NULL END) AS USERS FROM USER_INFO