집계 함수입문

SUM

숫자 컬럼의 합계를 반환하는 함수 (NULL은 무시)

정의

숫자 컬럼의 모든 값을 더한 결과를 반환한다. NULL은 자동으로 무시된다. 주의할 점은 합칠 값이 하나도 없거나 모두 NULL일 때는 0이 아닌 NULL이 반환된다는 것. 윈도우 함수와 함께 OVER()를 붙이면 누적합 같은 계산도 할 수 있다.

왜 중요한가?

합계를 구할 때 빈 그룹의 결과가 NULL인지 0인지 헷갈리면 화면에 "NULL"이 그대로 찍히는 사고가 난다. 화면이나 리포트에 표시할 때는 COALESCE(SUM(x), 0) 처럼 감싸서 NULL을 0으로 바꿔주는 게 안전하다.

틀리기 쉬운 포인트

  • !SUM은 NULL을 무시합니다. 모든 값이 NULL이면 결과는 0이 아닌 NULL.
  • !표시용으로는 COALESCE(SUM(x), 0) 패턴을 사용하세요.
  • !윈도우 함수로 누적합 계산 시 ORDER BY를 빼먹으면 그냥 전체 합계가 됩니다.

예시

SELECT dept_id, SUM(salary) AS total_pay
FROM employees
GROUP BY dept_id; -- 누적합
SELECT order_date, amount, SUM(amount) OVER (ORDER BY order_date) AS running_total
FROM orders;

성능 포인트

!GROUP BY와 함께 쓸 때 그룹화 비용이 핵심. 합계를 자주 보면 집계 테이블(materialized view)을 검토하라.

관련 개념

관련 카테고리