[SQL] COUNT(*) vs COUNT(column), 결과가 다른 이유

Unit·2025년 3월 30일

SQL

목록 보기
4/59

SQL에서 행 수를 셀 때 자주 사용하는 COUNT() 함수.
비슷해 보이는 아래 두 가지 방식, 결과가 항상 같을까요?

-- 방식 1
SELECT COUNT(*) FROM users;

-- 방식 2
SELECT COUNT(email) FROM users;

✅ COUNT(*)는 모든 행을 셉니다

COUNT(*)NULL 여부와 관계없이 모든 행을 집계합니다.
즉, 테이블에 존재하는 전체 행 수를 반환합니다.


✅ COUNT(column)은 NULL을 제외하고 셉니다

COUNT(컬럼명)해당 컬럼이 NULL이 아닌 경우만 집계합니다.
NULL이 포함된 행은 제외되기 때문에,
COUNT(*)와 결과가 달라질 수 있습니다.


🔍 예시로 살펴볼게요

-- 예시 테이블 users
id | email
---|--------------------
1  | user1@example.com
2  | NULL
3  | user3@example.com
SELECT COUNT(*)      -- 결과 : 3
FROM users;

SELECT COUNT(email)  -- 결과 : 2
FROM users;

COUNT(*)는 모든 행을 셌고,
COUNT(email)은 NULL을 제외한 2행만 셌습니다.


정리

✔️ COUNT(*)는 NULL 포함 여부 관계없이 전체 행을 셉니다.
✔️ COUNT(column)은 해당 컬럼이 NULL이 아닌 경우만 셉니다.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글