[MSSQL] 합계 구하는 3가지 방법 (SUM 함수)
- 데이터베이스/MSSQL
- 2022. 6. 24.
SQL Server에서 합계를 구하기 위해서는 SUM 함수를 사용하면 됩니다. SUM 함수를 사용하여 합계를 구하면 조회된 각 행에 합계를 표시할 수 있으며, 별도의 새로운 행으로 합계를 표시하고 싶을 때는 ROLLUP 구문을 사용할 수 있으며 조회된 데이터 외에 새로운 합계 행이 추가됩니다. ROLLUP 사용법은 하단 링크를 참고하면 됩니다.
목차 |
전체 데이터 합계 구하기
합계 구하기
SELECT SUM(sal)
FROM emp
WHERE job = 'SALESMAN'
직업(job)이 "SALESMAN"인 직원의 급여(sal) 총합계 조회한다.
SUM() 함수는 수치 값만 합산할 수 있다. (문자열 합치기는 STRING_AGG 함수를 사용)
합계 함수를 여러 번 사용해서 합계 구하기
SELECT SUM(sal) AS sum_sal
, SUM(comm) AS sum_comm
, SUM(sal) + SUM(comm) AS sum_total
FROM emp
WHERE job = 'SALESMAN'
직업(job)이 "SALESMAN"인 직원의 급여(sal)와 성과급(comm)의 합계를 조회한다.
여러 개의 SUM() 함수는 더하기(+)를 사용하여 다시 합산할 수 있다.
GROUP BY 절을 사용하지 않으면 집계 함수(SUM)만 SELECT 절에 사용할 수 있으며, 일반 칼럼(job)을 같이 사용하기 위해서는 GROUP BY 절을 사용해서 그룹으로 집계를 해야 한다.
그룹별 합계 구하기 (GROUP BY 절)
그룹별 합계 구하기
SELECT job
, SUM(sal) AS sum_sal
FROM emp
GROUP BY job
직업(job) 별로 급여(sal) 총합계를 조회한다.
그룹별 합계 함수를 여러 번 사용하여 합계 구하기
SELECT job
, SUM(sal) AS sum_sal
, SUM(comm) AS sum_comm
, ISNULL(SUM(sal), 0) + ISNULL(SUM(comm), 0) AS sum_total
FROM emp
GROUP BY job
직업(job) 별로 급여(sal), 성과급(comm) 총합계를 조회한다.
SQL에서 더하기(+) 연산자를 사용할 때 NULL과 연산을 하면 NULL이 반환된다. (ISNULL 함수로 치환)
( 6000 + NULL = NULL → 6000 + ISNULL(NULL, 0) = 6000 )
NULL이 발생할 수 있는 항목은 꼭 ISNULL 함수를 사용하여 치환 후 연산을 해야 한다.
분석함수를 사용하여 합계 구하기 (OVER 절)
조회된 데이터에서 전체 합계 구하기
SELECT empno
, ename
, job
, sal
, SUM(sal) OVER() AS sum_sal
FROM emp
WHERE job = 'SALESMAN'
조회된 데이터의 급여(sal) 총합계를 구하여 각 행에 표시한다.
OVER 절과 함께 SUM 함수를 사용하면 분석함수의 역할을 한다.
조회된 데이터에 그룹별로 합계 구하기
SELECT empno
, ename
, job
, sal
, SUM(sal) OVER(PARTITION BY job) AS sum_sal
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
OVER 절에서 PARTITION BY 절을 함께 사용하면, 조회된 데이터에서 그룹별로 급여(sal)를 합산하여 총합계를 그룹별로 각 행에 표시한다.
GROUP BY 절을 사용하여 합계를 구하는 방법과 OVER 절을 사용하여 합계를 구하는 방법은 각각 장단점이 있습니다. OVER 절을 사용하면 SELECT 절에 원하는 칼럼을 자유롭게 작성할 수 있는 장점이 있으며 사용법을 익혀 놓으면 많은 고급 쿼리문을 작성할 때 도움이 됩니다.