본문 바로가기
Database/Oracle

[ORACLE] SUM() 함수 기본 문법부터 실무 활용 팁까지

by Papa Martino V 2025. 5. 31.
728x90

오라클 SUM() 함수 기본 문법부터 실무 활용 팁까지
[ ORACLE ] SUM()

1. SUM 함수란?

SUM() 함수는 숫자형 칼럼의 총합을 계산하는 Oracle SQL의 대표적인 집계 함수입니다. GROUP BY, PARTITION BY 절과 함께 쓰이면 더욱 강력한 통계 분석 도구로 변모합니다.

📌 기본 문법

SELECT SUM(컬럼명) FROM 테이블명;

2. SUM 함수의 기본 예제

예제: 전체 직원의 급여 총합

SELECT SUM(sal) AS total_salary
  FROM emp;

결과 예시:

total_salary
29025

3. GROUP BY와 함께 사용하기

GROUP BY는 특정 칼럼을 기준으로 데이터를 묶은 후, 각 그룹별로 합계를 구할 수 있게 해 줍니다.

예제: 부서별 급여 총합

SELECT deptno, SUM(sal) AS dept_total_salary
  FROM emp
 GROUP BY deptno;

4. PARTITION BY와 함께 분석 함수로 활용

SUM() 함수는 분석 함수와 함께 OVER() 절을 사용하여 행 단위 결과 + 누적 합계 계산이 가능합니다.

예제: 부서별 누적 급여 합계

SELECT deptno, ename, sal,
       SUM(sal) OVER (PARTITION BY deptno ORDER BY sal DESC) AS running_total
  FROM emp;

5. 조건부 SUM (CASE WHEN)

CASE WHEN과 함께 사용하면 특정 조건을 만족하는 행만 대상으로 합계를 구할 수 있습니다.

예제: 2000 이상 급여자의 합계

SELECT SUM(CASE WHEN sal >= 2000 THEN sal ELSE 0 END) AS high_salary_sum
  FROM emp;

6. 실무 활용 예제

💼 예제 1: 고객별 월별 주문 합계

SELECT customer_id, TO_CHAR(order_date, 'YYYY-MM') AS order_month,
       SUM(order_amount) AS monthly_total
  FROM orders
 GROUP BY customer_id, TO_CHAR(order_date, 'YYYY-MM');

💼 예제 2: 지역별 누적 매출 계산

SELECT region, order_date, sales_amount,
       SUM(sales_amount) OVER (PARTITION BY region ORDER BY order_date) AS regional_running_total
  FROM sales;

7. 성능 팁 및 최적화

  • 인덱스 활용: GROUP BY, WHERE 절에 사용되는 칼럼은 인덱스 설정 권장
  • ROLLUP, CUBE: 다차원 합계를 구할 때 유용
  • NULL 값: SUM은 NULL을 무시하고 계산함

8. SUM 함수 오류 및 주의사항

  • ORA-00937: 단일 그룹 함수가 아닌 SELECT 문에서 GROUP BY 누락 시 발생
  • NULL: NULL 값은 합계에서 제외되므로 데이터 정제 필요
  • 데이터 타입: SUM 함수는 숫자형 칼럼에서만 동작
💡 TIP: SUM 함수는 단순한 합계 계산을 넘어서, 누적 분석, 조건부 집계, 실시간 분석에도 매우 유용합니다.

9. 요약정리

항목 내용
기본 용도 숫자 컬럼의 총합 계산
결합 문법 GROUP BY, OVER(PARTITION BY), CASE WHEN
실무 활용 매출 집계, 성과 분석, 보고서 출력
주의사항 NULL 제외, GROUP BY 생략 오류

10. 참고 문헌 및 출처

728x90