📌 📊 집계 함수란?
여러 데이터 값을 요약해주는 함수
👉 한 줄 요약: "많은 데이터를 요약해서 대표값으로 보여주는 함수"
집계함수는 집계함수를 포함할수 없다.
✅ 자주 쓰는 집계 함수 5종 세트
| 함수명 | 역할 | 예시 결과 |
| SUM() | 합계 | 총 매출, 총 수량 |
| AVG() | 평균 | 평균 나이, 평균 급여 |
| COUNT() | 개수 | 전체 회원 수, 주문 건수 |
| MAX() | 최댓값 | 최고 점수, 최고 가격 |
| MIN() | 최솟값 | 최저 점수, 최저 기온 |
✅ 기본 형식
SELECT 집계함수(컬럼명)
FROM 테이블명;
✅ 예제로 보는 집계 함수
1. SUM() – 합계
SELECT SUM(SALARY) AS 총급여
FROM EMPLOYEES;
👉 EMPLOYEES 테이블에서 모든 직원의 급여 총합
2. AVG() – 평균
SELECT AVG(SALARY) AS 평균급여
FROM EMPLOYEES;
👉 급여 평균
3. COUNT() – 개수
SELECT COUNT(*) AS 총사원수
FROM EMPLOYEES;
👉 전체 행(사람) 수
SELECT COUNT(DEPARTMENT_ID)
FROM EMPLOYEES;
👉 DEPARTMENT_ID가 NULL이 아닌 행만 카운트됨!
4. MAX() – 최댓값
SELECT MAX(SALARY) AS 최고급여
FROM EMPLOYEES;
5. MIN() – 최솟값
SELECT MIN(SALARY) AS 최저급여
FROM EMPLOYEES;
✅ 조건이 있는 집계: WHERE와 함께 쓰기
SELECT AVG(SALARY)
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 50;
👉 부서 50번의 급여 평균
✅ 그룹별 집계: GROUP BY
SELECT DEPARTMENT_ID, AVG(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID;
👉 부서별 평균 급여
✅ 조건 필터링: HAVING
SELECT DEPARTMENT_ID, AVG(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING AVG(SALARY) > 3000;
👉 평균 급여가 3000 이상인 부서만 보여줌
🧾실무예제)
🧾 1. [직원 급여 요약] – SUM, AVG, MAX, MIN
SELECT
SUM(SALARY) AS 총급여,
AVG(SALARY) AS 평균급여,
MAX(SALARY) AS 최고급여,
MIN(SALARY) AS 최저급여
FROM EMPLOYEES;
✅ 회사 인사팀에서 급여통계를 구할 때 사용해요.
🛍️ 2. [고객별 주문 총액] – GROUP BY + SUM()
SELECT
CUSTOMER_ID,
SUM(ORDER_AMOUNT) AS 총주문금액
FROM ORDERS
GROUP BY CUSTOMER_ID;
✅ 고객별로 얼마치 주문했는지 계산할 때 사용함.
🧮 3. [부서별 인원수] – GROUP BY + COUNT()
SELECT
DEPARTMENT_ID,
COUNT(*) AS 인원수
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID;
✅ 부서마다 몇 명이 있는지 확인할 때 사용.
📅 4. [월별 매출 요약] – TO_CHAR + GROUP BY
SELECT
TO_CHAR(ORDER_DATE, 'YYYY-MM') AS 월,
SUM(ORDER_AMOUNT) AS 총매출
FROM ORDERS
GROUP BY TO_CHAR(ORDER_DATE, 'YYYY-MM')
ORDER BY 월;
✅ 월별로 매출 보고서 만들 때 진짜 자주 씀!
🔎 5. [조건부 평균 구하기] – WHERE
SELECT
AVG(SALARY) AS 평균급여
FROM EMPLOYEES
WHERE JOB_ID = 'SA_REP';
✅ **영업직(SA_REP)**의 평균 급여 구할 때.
🔝 6. [상위 고객 5명 구하기] – ORDER BY + ROWNUM
SELECT *
FROM (
SELECT CUSTOMER_ID, SUM(ORDER_AMOUNT) AS 총금액
FROM ORDERS
GROUP BY CUSTOMER_ID
ORDER BY 총금액 DESC
)
WHERE ROWNUM <= 5;
✅ VIP 고객 TOP 5 구할 때 정말 많이 써요.
✅ 7. [재고가 10개 이상인 상품의 총 개수] – HAVING
SELECT
CATEGORY,
COUNT(*) AS 상품수
FROM PRODUCTS
GROUP BY CATEGORY
HAVING COUNT(*) >= 10;
✅ 특정 카테고리에서 상품 수가 일정 기준 이상인 것만 필터링.
💡 실무 팁
| 상황 | 사용하는 함수/구문 |
| 통계 요약 | SUM, AVG, MAX, MIN |
| 개수 세기 | COUNT() |
| 조건 필터링 | WHERE, HAVING |
| 카테고리별 분석 | GROUP BY |
| 순위 | ROWNUM, RANK() 또는 ROW_NUMBER() (윈도우 함수) |
'대덕인재 > Oracle' 카테고리의 다른 글
| [Oracle D-12] 내부조인(Inner Join),외부조인(Outer Join), ANSI join (0) | 2025.04.17 |
|---|---|
| [Oracle D-11] 출력순서 (0) | 2025.04.15 |
| [Oracle D-9] 날짜함수 (SYSDATE, SYSTIMESTAMP, ADD_MONTHS,...등등등) (0) | 2025.04.11 |
| [Oracle D-8] 문자열 함수(String Functions) (0) | 2025.04.11 |
| [Oracle D-8] 숫자함수 (0) | 2025.04.11 |