본문 바로가기

프로그래밍/MSSQL

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

반응형

 

 

 

집계함수 중 행의 개수를 세는 COUNT 함수에 대해 알아보자

COUNT(*), COUNT(1), COUNT(컬럼)

 

 

 

COUNT(*), COUNT(1)

COUNT(*)COUNT(1)와 동일하다고 볼 수 있다.

코딩 스타일이 다를뿐 두 개의 성능차이는 없다.

 

 

 

COUNT(컬럼)

COUNT(*), COUNT(1)은 NULL 값과 상관없이 모든 행 수를 카운트한다.

하지만 COUNT(컬럼)은 해당 컬럼의 값이 NULL인 행은 COUNT에 포함되지 않는다.

 

 

 

예제

COUNT(COL1)COUNT(*)의 결과를 비교해보자

 

WITH TABLE1 (COL1) AS (
    SELECT 1 UNION ALL
    SELECT 2 UNION ALL
    SELECT NULL UNION ALL
    SELECT 3 UNION ALL
    SELECT 4
)
SELECT COUNT(*) AS 'COUNT(*)'
    , COUNT(COL1) AS 'COUNT(COL1)'
FROM TABLE1

 

원본 데이터
결과 데이터

 

다음과 같이 COUNT(*)의 결과는 NULL값을 포함한 전체 행 (5)를 출력

COUNT(COL1)은 NULL값을 제외한 행 (4)를 출력한다.

 

 

[MSSQL] COUNT CASE (조건 카운트) COUNT DISTINCT (중복제거 카운트)
[MSSQL] GROUP BY 없이 컬럼과 함께 COUNT를 조회해보자 (COUNT OVER)

 

 

반응형