[MSSQL] 합계 구하는 3가지 방법 (SUM 함수)

SQL Server에서 합계를 구하기 위해서는 SUM 함수를 사용하면 됩니다. SUM 함수를 사용하여 합계를 구하면 조회된 각 행에 합계를 표시할 수 있으며, 별도의 새로운 행으로 합계를 표시하고 싶을 때는 ROLLUP 구문을 사용할 수 있으며 조회된 데이터 외에 새로운 합계 행이 추가됩니다. ROLLUP 사용법은 하단 링크를 참고하면 됩니다.

 

MSSQL 합계 구하기

목차
  1. 전체 데이터 합계 구하기
  2. 그룹별 합계 구하기 (GROUP BY 절)
  3. 분석함수를 사용하여 합계 구하기 (OVER 절)

 

전체 데이터 합계 구하기

합계 구하기

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 절에 원하는 칼럼을 자유롭게 작성할 수 있는 장점이 있으며 사용법을 익혀 놓으면 많은 고급 쿼리문을 작성할 때 도움이 됩니다.

예제쿼리(테이블포함).txt
0.00MB

 

 

[MSSQL] ROLLUP 사용법 (소계, 합계)

SQL Server에서 그룹 함수로 집계된 데이터에서 소계, 합계를 쉽게 구하기 위해서는 ROLLUP를 사용하면 된다. 아래의 예제를 참고하면 쉽게 이해할 수 있다. ROLLUP은 2가지 사용방법이 있다. 어느 것을

gent.tistory.com

 

[MSSQL] 순차적 누적 합계 구하기 (SUM OVER)

SQL Server에서 순차적 누적 합계를 구하기 위해서는 SUM 함수와 OVER 절을 사용하면 된다. 누적 합산 기준은 OVER 절 내부의 ORDER BY 절 정렬 기준으로 데이터를 정렬하고 순차적으로 합산을 한다. OVER

gent.tistory.com

 

[MSSQL] GROUP BY 절 사용법 (그룹별 집계)

SQL Server에서 GROUP BY 절은 특정 칼럼을 기준으로 집계 함수를 사용하여 건수(COUNT), 합계(SUM), 평균(AVG) 등 집 계성 데이터를 추출할 때 사용한다. GROUP BY 절에서 기준 칼럼을 여러 개 지정할 수 있으

gent.tistory.com

 

댓글

Designed by JB FACTORY