[SQL] sql tip - count함수를 활용하여 NULL값 처리하기

2023. 9. 1. 01:02DATA PROGRAMMING/SQL

count함수는 집계함수의 한 종류이다. 집계함수(sum, min, mas 등)은 NULL값의 데이터는 무시하고 집계하는 특성이 있지만, count의 경우엔 NULL까지 포함해서 집계할수 있다.

 

SELECT SUM(NUM), AVG(NUM), MAX(NUM), MIN(NUM) AS SUM_NUM
FROM 
(
SELECT NULL AS NUM FROM DUAL
UNION ALL 
SELECT 10 AS NUM FROM DUAL
UNION ALL 
SELECT 20 AS NUM FROM DUAL
UNION ALL 
SELECT 30 AS NUM FROM DUAL
UNION ALL 
SELECT 40 AS NUM FROM DUAL
)

 

여기서 각각의 집계함수는 NULL값은 무시한채로 집계한 것을 알수있다. 또한, oracle 기준에서는  NULL 값을 가장 큰 값으로 치기에, 내림차순으로 정렬한다면 NULL이 가장 위로 정렬되지만, MAX함수를 보면 NULL값 자체를 무시하기에 40을 출력하는 것을 알 수 있다.

 

SELECT COUNT(*), COUNT(nUM)
FROM 
(
SELECT NULL AS NUM FROM DUAL
UNION ALL 
SELECT 10 AS NUM FROM DUAL
UNION ALL 
SELECT 20 AS NUM FROM DUAL
UNION ALL 
SELECT 30 AS NUM FROM DUAL
UNION ALL 
SELECT 40 AS NUM FROM DUAL
)

여기서 count(*)는 '테이블'에 대해 집계함수로서 적용되는 것이기에 'NULL이 저장된 행'까지 함께 집계한다.

count(NUM)은 'NUM컬럼'에 대해 집계함수로서 적용되는 것이기에 NUM칼럼상에서 NULL로 저장된 값은 다른 집계함수와 마찬가지로 무시하고 집계한다.

이를 통해 count함수는 다른 집계함수와 다르게 NULL값도 고려하여 집계에 사용할수 있다는 것을 알 수 있다.