반응형
집계함수 중 행의 개수를 세는 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)
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] JOIN CASE, JOIN OR 조건에 따라 조인테이블 및 조인조건 변경 (0) | 2019.10.02 |
---|---|
[MSSQL] OUTPUT INSERTED, DELETED 데이터 수정 및 삭제 전 백업 (1) | 2019.10.02 |
[MSSQL] 세로 데이터 가로로 출력 (데이터 한줄로 출력) STUFF, FOR XML PATH (0) | 2019.09.29 |
[MSSQL] COUNT CASE (조건 카운트) COUNT DISTINCT (중복제거 카운트) (2) | 2019.09.29 |
[MSSQL] CONVERT, CAST 형변환 함수 (0) | 2019.09.29 |