반응형
데이터를 특정 칼럼을 기준으로 집합으로 묶어 행의 개수를 집계할 때 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 중복제거
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] ALL, ANY, SOME (하위 쿼리에서 값을 둘 이상 반환했습니다.) (0) | 2021.02.26 |
---|---|
[MSSQL] RAISERROR 프로시저 오류 처리 (0) | 2021.02.25 |
[MSSQL] XML 문자 파싱 오류 (XML 구문 분석: 잘못된 xml 문자입니다.) (0) | 2021.01.11 |
[MSSQL] 다중 칼럼 PIVOT 처리 (복수개의 열 행렬 변환) (0) | 2020.12.08 |
[MSSQL] TRIM/RTRIM/LTRIM 문자열 공백 및 지정 문자 제거 (0) | 2020.09.19 |