MSSQL

MSSQL - ROLLUP, CUBE, GROUPING

깐까망 2024. 5. 20. 18:21
728x90
반응형
SMALL

▶ ROLLUP

- 그룹간의 소계, 합계, GROUP BY 항목의 오른쪽에서 왼쪽순으로 그룹을 묶어 집계

<기본 문법>
SELECT [필드 OR 집계함수]
 FROM [테이블명]
GROUP BY [필드]
 WITH ROLLUP

SELECT [필드 OR 집계함수]
 FROM [테이블명]
 GROUP BY [필드], ROLLUP[필드]

 

- 테이블 EMP에 관하여 간단한 문장을 예시로 들어보면 아래와 같습니다.

SELECT EMPNO,DEPTNO,SUM(SAL) AS SAL,SUM(COMM) COMM
 FROM EMP 
GROUP BY EMPNO,DEPTNO
 WITH ROLLUP

 

▶ CUBE

- GROUP BY 항목들 간 모든 경우의 수로 그룹을 생성하여 집계

<기본 문법>
SELECT [필드 OR 집계함수]
 FROM [테이블명]
GROUP BY [필드]
 WITH CUBE

SELECT [필드 OR 집계함수]
 FROM [테이블명]
 GROUP BY [필드], CUBE[필드]

 

- 간단한 예시문과 결과값을 봅시다.

SELECT EMPNO,DEPTNO,SUM(SAL) AS SAL,SUM(COMM) COMM
 FROM EMP 
GROUP BY EMPNO,DEPTNO
 WITH CUBE

 

▶ GROUPING

- 집계 여부 반환, 집계된 경우 결과 집합에 1 반환, 집계되지 않는 경우에 0 반환

<기본 문법>
SELECT GROUPING([필드])
 FROM [테이블명]
GROUP BY ROLLUP([필드],...)
[HAVING]
[ORDER BY]

 

- 간단한 예시와 결과값을 보면

SELECT GROUPING(EMPNO) AS EMPNO,EMPNO,GROUPING(DEPTNO) AS DEPTNO, DEPTNO,SUM(SAL) AS SAL,SUM(COMM) COMM
 FROM EMP 
GROUP BY ROLLUP(EMPNO,DEPTNO)

 

- 집계된 경우 결과 집합에 1이 출력된게 보입니다. 

 

* 다양하게 활용을 하여 개발에 도움이 되었으면 좋겠습니다! 파이팅!

728x90
반응형
LIST