COUNT(*)와 COUNT(컬럼명)의 차이 – 결과는 비슷해도 의미는 다르다
SQL에서 자주 사용하는 집계 함수 중 하나인 COUNT()
는 단순히 행의 수를 세는 데에 유용합니다. 하지만 COUNT(*)
와 COUNT(컬럼명)
은 비슷해 보이지만 실제 의미와 동작 방식에서 중요한 차이를 가지고 있습니다.
COUNT(*)는 모든 행을 센다
COUNT(*)
는 해당 테이블에서 NULL을 포함한 모든 행의 개수를 셉니다. 이는 테이블에 존재하는 전체 레코드 수를 파악하고자 할 때 사용됩니다.
예시:
SELECT COUNT(*) FROM employees;
이 쿼리는 employees
테이블의 총 행 수를 반환합니다. 특정 컬럼에 NULL이 있든 없든 관계없이 전체 행 수를 기준으로 계산합니다.
COUNT(컬럼명)는 NULL을 제외한다
반면 COUNT(컬럼명)
은 해당 컬럼에서 NULL이 아닌 값의 개수만 셉니다. 즉, 어떤 컬럼의 값이 얼마나 채워져 있는지, 즉 실제 데이터가 있는 레코드 수를 알고 싶을 때 유용합니다.
예시:
SELECT COUNT(department_id) FROM employees;
이 쿼리는 department_id
컬럼의 값이 NULL이 아닌 행의 개수를 반환합니다. 만약 부서가 배정되지 않은 사원이 있다면 그 행은 집계에서 제외됩니다.
실무에서의 활용 팁
- 데이터 완전성 검증 시에는
COUNT(컬럼명)
을 사용하여 누락된 값이 있는지 파악합니다. - 전체 행 수가 필요한 로깅, 페이징 처리 등에서는
COUNT(*)
을 사용하는 것이 적절합니다. COUNT(DISTINCT 컬럼명)
처럼 고유한 값의 개수를 세는 방식과도 구분하여 사용해야 합니다.
결론
COUNT(*)
과 COUNT(컬럼명)
은 비슷해 보이지만 전혀 다른 결과를 가져올 수 있으므로, 목적에 따라 정확히 구분하여 사용하는 것이 중요합니다. 특히 실무에서 NULL 값이 얼마나 존재하는지를 파악할 때 이 차이를 알고 있으면 보다 정확한 데이터 분석이 가능합니다.
#SQL #COUNT #집계함수 #기초정리 #데이터베이스 #NULL #쿼리
'SQL 기초 정리' 카테고리의 다른 글
CTE(Common Table Expressions)의 활용법 – 서브쿼리보다 명확한 쿼리 작성 (0) | 2025.04.12 |
---|---|
CASE WHEN 구문의 활용법 – 조건 분기와 표현식을 동시에 해결하는 방법 (0) | 2025.04.11 |
JOIN 없이도 가능하다? SQL에서 서브쿼리로 해결하는 3가지 실무 상황 (0) | 2025.04.11 |
DISTINCT vs GROUP BY – 결과는 같아도 목적은 다르다 (0) | 2025.04.11 |
WHERE 절과 HAVING 절, 헷갈리는 이유와 실무 기준 정리 (0) | 2025.04.11 |