728x90

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와의 결합 등 상황에 맞는 정확한 사용이 중요합니다.
출처
- Oracle 공식 문서: https://docs.oracle.com/en/database/
- Oracle Live SQL 예제: https://livesql.oracle.com
- Stack Overflow, SQL Reference 실무 질문
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] MIN() 함수 사용법과 GROUP BY 절 실전 적용 (0) | 2025.06.01 |
|---|---|
| [ORACLE] MEDIAN() vs AVG() : 중간 값과 평균 값 차이 이해하기 (0) | 2025.06.01 |
| [ORACLE] AVG() 함수 완벽 정리 : 평균 계산의 모든 것 (0) | 2025.05.31 |
| [ORACLE] SUM() 함수 기본 문법부터 실무 활용 팁까지 (0) | 2025.05.31 |
| [ORACLE] ROW_NUMBER() 함수 완벽 가이드 : 순위 매기기 실전 예제로 배우기 (0) | 2025.05.31 |