[MSSQL] GROUPING SETS 사용법 (특정 항목의 합계)

SQL Server에서 특정 기준의 소계 및 합계를 구할 때는 GROUPING SETS를 사용하면 쉽게 해결된다. GROUPING SETS는 ROLLUP과 CUBE 보다 더 다양한 합계를 구할 수 있으며 조금 더 기능이 강력하다고 생각하면 된다. 그러나 처음 사용할 때는 조금 복잡하다고 생각될 수 있지만, 괄호 사용법에 대해서 조금만 이해한다면 크게 어렵지 않게 사용할 수 있다.

 

GROUPING SETS 사용법

합계, 총합계 구하기

SELECT job
     , SUM(sal)
  FROM emp
 WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN')
 GROUP BY GROUPING SETS(job, ())

 

 

GROUPING SETS는 그룹 칼럼을 입력하면 해당 칼럼별(job) 합계가 집계되고,

빈 괄호( () )를 입력하면 총합계가 집계된다.

 

칼럼별 합계 구하기

SELECT job
     , deptno
     , SUM(sal)
  FROM emp
 WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN')
 GROUP BY GROUPING SETS(job, deptno)

 

 

그룹 칼럼을 여러 개(job, deptno) 입력했을 경우 그룹 칼럼의 개별 합계가 집계된다.

GROUP BY 절은 입력된 칼럼을 모두 포함하여 집계가 되지만, GROUPING SETS는 개별인 것을 기억하면 된다.

 

칼럼 그룹별 합계 구하기

SELECT job
     , deptno
     , SUM(sal)
  FROM emp
 WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN')
 GROUP BY GROUPING SETS((job, deptno))

 

 

입력된 그룹 칼럼을 괄호로 묶으면 괄호 안의 그룹칼럼을 모두 포함한 합계가 집계된다.

GROUP BY job, dept와 동일한 결과가 조회된다.

 

모든 합계 구하기

SELECT job
     , deptno
     , SUM(sal)
  FROM emp
 WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN')
 GROUP BY GROUPING SETS(job, deptno, (job, deptno), ())

 

 

위의 3가지 예제의 합계가 모두 집계되도록 집계 기준을 입력할 수 있다. 위의 예제는 집계할 수 있는 모든 합계를 조회한 것이다. CUBE 함수의 결과와 동일하다.

 

GROUPING SETS는 기준 괄호 안에 하나의 그룹 칼럼을 여러 번 사용하여 합계를 구할 수 있다. 그러나 모든 그룹 칼럼이 괄호 안에 1회 이상 작성되어야 오류가 발생하지 않는다.

 

GROUPING SETS는 원하는 기준을 합계만 집계할 때 유용하게 사용할 수 있으며, 괄호 사용법을 잘 이해해야 한다.

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

 

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

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

gent.tistory.com

 

[MSSQL] CUBE 함수 사용법 (모든 경우의 합계)

SQL Server에서 모든 경우의 합계를 구할 때는 CUBE 함수를 사용하면 된다. 일반적인 합계를 구할 때는 SUM 함수를 사용하지만, 합계와 소계를 동시에 구하기 위해서는 ROLLUP, CUBE, GROUPING SETS 함수를 사

gent.tistory.com

 

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

SQL Server에서 합계를 구하기 위해서는 SUM 함수를 사용하면 됩니다. SUM 함수를 사용하여 합계를 구하면 조회된 각 행에 합계를 표시할 수 있으며, 별도의 새로운 행으로 합계를 표시하고 싶을 때

gent.tistory.com

 

댓글

Designed by JB FACTORY