본문 바로가기

프로그래밍/MSSQL

[MSSQL] GROUP BY COUNT (NULL 포함 집계)

반응형

 

 

 

 

 

 

 

 

 

 

 

데이터를 특정 칼럼을 기준으로 집합으로 묶어 행의 개수를 집계할 때 GROUP BY, COUNT를 사용한다.

 

COUNT(칼럼)의 경우에는 NULL인 행은 카운트에 포함시키지 않지만, NULL도 포함시켜 행의 개수를 집계하고 싶다.

 

 

 

CASE WHEN 으로 칼럼의 값이 NULL일 경우 'NULL'로 치환하여 카운트가 되도록 한다.

 

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

 

 

 

예제 데이터와 함께 좀 더 자세히 살펴보자

 

 

 

예제

 

원본 데이터

 

다음과 같이 입고일/제품/회사 정보가 저장된 데이터가 있다.

 

입고일/제품과 상관없이 회사 칼럼을 기준으로 행의 개수를 집계하고 싶다.

 

즉, 회사별로 몇개의 행을 가지고 있는지가 알고 싶다.

 

원하는 데이터

원하는 데이터는 위와 같다.

 

 

 

일반적으로 GROUP BY 묶어 COUNT를 하면 결과는 아래와 같이 NULL의 경우 0으로 나온다.

 

SELECT 칼럼, COUNT(칼럼) AS CNT
FROM 테이블
GROUP BY 칼럼

 

결과 데이터

 

 

위에서 설명한 대로 NULL도 마찬가지로 집계하려면, CASE 문을 활용한다.

 

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

 

결과 데이터

 

 

 

 

 

 

 

[MSSQL] GROUP BY COUNT 그룹으로 묶어 집계하기

[MSSQL] COUNT(*) COUNT(1), COUNT(컬럼명) 행의 개수

[MSSQL] COUNT CASE (조건 카운트) COUNT DISTINCT (중복제거 카운트)

[MSSQL] GROUP BY 없이 컬럼과 함께 COUNT를 조회해보자 (COUNT OVER)

[MSSQL] DISTINCT, GROUP BY 중복제거

 

 

 

 

 

 

 

 

반응형