집계 함수란?
집계 함수(Aggregate Funtion)는 여러 행(row)을 하나의 값으로 계산하는 함수다. 주로 GROUP BY와 함께 사용하며 데이터를 요약하거나 통계를 낼 때 사용한다. 이제 COUNT, SUM, AVG에 대해 알아보자...!
1. COUNT 함수
◆ COUNT 기본 문법
COUNT(*)
COUNT(컬럼명)
◆ COUNT(*) VS COUNT(컬럼) 차이
| 구분 | 설명 |
| COUNT(*) | NULL 포함, 행 개수 |
| COUNT(컬럼) | NULL 제외, 값 있는 행만 |
※ 예제 테이블 ( EMP )
| EMP_ID | SALARY |
| 1 | 3000 |
| 2 | NULL |
| 3 | 2000 |
※ COUNT 예제
SELECT COUNT(*)
FROM EMP; -- 결과: 3
SELECT COUNT(SALARY)
FROM EMP -- 결과: 2
◆ 조건별 COUNT ( CASE WHEN 활용 )
SELECT COUNT(CASE WHEN STATUS = 'Y' THEN 1 END) AS USE_CNT
FROM USER_INFO;
☞ 특정 조건에 해당하는 개수 계산
2. SUM 함수
◆ SUM 기본 문법
SUM(컬럼명)
- 숫자형 컬럼만 가능
- NULL 값은 자동 제외
※ SUM 기본 예제
SELECT SUM(SALARY) AS TOTAL_SALARY
FROM EMP;
☞ NULL은 합계에서 제외됨
◆ 조건부 SUM
SELECT SUM(CASE WHEN GENDER = 'M' THEN SALARY ELSE 0 END) AS MALE_SALARY
FROM EMP;
3. AVG 함수
◆ AVG 기본 문법
AVG(컬럼명)
- SUM / COUNT 기반 계산
- NULL 값 자동 제외
※ AVG 예제
SELECT AVG(SALARY) AS AVG_SALARY
FROM EMP;
★ AVG 주의 사항 ( SALARY가 NULL인 행은 평균 계산에서 제외 )
AVG(SALARY)
★ NULL 포함 평균 구하기
SELECT AVG(NVL(SALARY, 0)) AS AVG_SALARY
FROM EMP;
4. GROUP BY + 집계 함수
SELECT DEPT_ID
, AVG(SALARY) AS AVG_SALARY
FROM EMP
GROUP BY DEPT_ID;
5. COUNT / SUM / AVG 실무 패턴
※ 상태별 사용자 수
SELECT STATUS
, COUNT(*) AS CNT
FROM USER_INFO
GROUP BY STATUS;
※ 월별 매출 합계
SELECT TO_CHAR(SALE_DATE, 'YYYY-MM') AS YM
, SUM(PRICE) AS TOTAL_PRICE
FROM SALES
GROUP BY TO_CHAR(SALE_DATE, 'YYYY-MM');
※ 평균 점수 이상만 조회
SELECT DEPT_ID
, AVG(SCORE) AS AVG_SCORE
FROM STUDENT
GROUP BY DEPT_ID
HAVING AVG(SCORE) >= 80;
6. COUNT / SUM / AVG 사용 시 주의 사항
- 집계 함수는 GROUP BY 제외
- NULL 자동 제외 ( COUNT(*)는 제외)
- SELECT 일반 컬럼 ㅡ> GROUP BY 필수
- 조건은 WHERE / 집계 조건은 HAVING
마무리
이번 글에서는 오라클에서 많이 사용되는 집계 함수인 COUNT, SUM, AVG에 대해 알아보고, GROUP BY와 함께 사용하는 방법, 그리고 사용 시 주의 사항, 단순히 데이터를 조회하는 것을 넘어 데이터를 묶고 집계를 하는 방법을 알아보았습니다. 이번 내용을 기반으로 매출 통계, 사용자 수 집계, 평균 값 계산 등등 실무에서 자주 사용하는 것 같습니다. 다음에는 그룹별 집계 값을 계산하는 PARTITION BY(분석 함수)도 한번 정리해 보겠습니다. 감사합니다. (_ _)
'오라클' 카테고리의 다른 글
| [오라클] SELECT 문법 완벽 정리 ( 기본부터 실무까지 ) (0) | 2025.12.29 |
|---|---|
| [오라클] JOIN 문법 완벽 정리 ( INNER JOIN, OUTER JOIN ) (1) | 2025.12.27 |
| [오라클] GROUP BY 문법 완벽 정리 ( ORA-00979: GROUP BY 표현식이 아닙니다 ) (0) | 2025.12.25 |
| [오라클] CASE WHEN 문법 완벽 정리 ( 다중 CASE WHEN 정리 ) (0) | 2025.12.24 |
| [오라클] LIKE 문법 완벽 정리 (%, _) (0) | 2025.12.23 |