본문 바로가기
Database/Oracle

[ORACLE] COUNT() vs COUNT(*) 차이점과 성능 비교

by Papa Martino V 2025. 6. 1.
728x90

오라클 COUNT() vs COUNT(*) 차이점과 성능 비교
Oracle COUNT()

 

Oracle COUNT() 함수 완벽 가이드

Oracle SQL에서 COUNT() 함수는 가장 자주 사용되는 집계 함수 중 하나로, 주어진 조건에 맞는 행(row)의 수를 계산하는 데 사용됩니다. 본 글에서는 Oracle COUNT() 함수의 기본 문법부터 고급 활용법까지 다양한 예제를 통해 개발자가 실무에서 활용할 수 있도록 자세히 설명합니다.

1. COUNT() 함수란?

COUNT() 함수는 집계 함수(Aggregate Function)의 일종으로, 특정 칼럼 또는 전체 행의 개수를 반환합니다.

SELECT COUNT(*) FROM employees;
  

위 예제는 employees 테이블의 전체 행 수를 반환합니다.

2. COUNT(*) vs COUNT(칼럼명)

2.1 COUNT(*)

모든 행의 수를 반환하며, NULL 값을 포함합니다.

SELECT COUNT(*) FROM employees;

2.2 COUNT(column)

해당 칼럼에 NULL이 아닌 값의 수만 계산됩니다.

SELECT COUNT(manager_id) FROM employees;

예시 비교

-- 총 직원 수
SELECT COUNT(*) FROM employees;
-- 매니저가 지정된 직원 수
SELECT COUNT(manager_id) FROM employees;

3. COUNT(DISTINCT column)

중복을 제거한 유일한 값의 개수를 반환합니다.

SELECT COUNT(DISTINCT department_id) FROM employees;

4. GROUP BY와 COUNT()

GROUP BY 절과 함께 사용하면 그룹별로 집계가 가능합니다.

SELECT department_id, COUNT(*) 
FROM employees 
GROUP BY department_id;
  

5. 조건을 가진 COUNT()

WHERE 절과 함께 사용하면 특정 조건을 만족하는 행만 카운트됩니다.

SELECT COUNT(*) 
FROM employees 
WHERE department_id = 90;

6. 서브쿼리 내에서 COUNT()

SELECT department_id, 
       (SELECT COUNT(*) 
        FROM employees e2 
        WHERE e2.department_id = d.department_id) AS emp_count
FROM departments d;

7. 분석 함수와 COUNT()

COUNT()는 분석 함수로도 활용 가능합니다.

SELECT employee_id, department_id,
       COUNT(*) OVER (PARTITION BY department_id) AS dept_count
FROM employees;

8. 실무 응용 예제

8.1 각 부서의 직원 수를 구하고 5명 이상인 부서만 조회

SELECT department_id, COUNT(*) AS emp_count
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 5;

8.2 특정 기간 내 입사자 수

SELECT COUNT(*)
FROM employees
WHERE hire_date BETWEEN TO_DATE('2024-01-01', 'YYYY-MM-DD') 
                    AND TO_DATE('2024-12-31', 'YYYY-MM-DD');

9. 성능 주의사항

  • COUNT(*)는 NULL 포함, 인덱스를 잘 활용하지 못할 수 있음
  • COUNT(칼럼)은 해당 칼럼이 NOT NULL일 경우 COUNT(*)와 동일
  • DISTINCT는 정렬 비용이 발생하므로 대용량일 경우 주의

10. COUNT() 사용 시 유의점

  • NULL 처리 여부 파악 필수
  • DISTINCT는 성능 저하 유발 가능
  • GROUP BY 없이 집계하면 전체 테이블 기준

11. COUNT()와 함께 자주 쓰이는 함수

  • SUM(), AVG() : 숫자형 집계
  • MAX(), MIN() : 최댓값, 최솟값
  • GROUPING SETS, ROLLUP, CUBE : 고급 집계

12. 요약

Oracle의 COUNT() 함수는 실무 데이터 분석, 통계, 리포트 작성 등 다양한 환경에서 활용됩니다. NULL과 DISTINCT에 대한 이해, GROUP BY와의 결합 등 상황에 맞는 정확한 사용이 중요합니다.

출처

728x90