본문 바로가기

DB

[SQLD] GROUPING SETS, ROLLUP, CUBE

반응형

GROUPING SETS

select job, deptno, sum(sal)
from emp
group by grouping sets(job,deptno);

select deptno, mgr, sum(sal)
from emp
group by grouping sets(deptno, mgr)
order by deptno asc;

select deptno, mgr, sum(sal)
from emp
group by grouping sets(deptno, mgr, null);

grouping sets 안에 null을 입력하면 deptno의 소계, mgr의 소계, 전체 합계가 나온다. 

null은 합계를 의미한다. ()도 합계를 의미한다. 

 

ROLLUP

select mgr, deptno, sum(sal)
from emp
group by rollup(mgr,deptno);

ROLLUP(A,B)는 다음과 같이 구성된다. 인수 2개 

 

1. 전체합계 

2. 칼럼 A의 소계

3. 칼럼 A 와 B 조합의 소계 

 

만약 인수가 1개라면?

 

ROLLUP(A)는 다음과 같이 구성된다. 

1. GROUP BY A의 결과

2. GROUP BY NULL의 결과 

 

CUBE

CUBE(A,B)는 다음과 같이 구성된다.

 

1. GROUP BY A,B

2. GROUP BY A

3. GROUP BY B

4. GROUP BY NULL

 

ROLLUP, CUBE, GROUPING SETS 정리

1. ROLLUP은 계층구조라서 인수 순서가 바뀌면 수행 결과가 바뀐다. 

2. CUBE는 다차원 집계함수이며 시스템 부하가 ROLL UP보다 크다. 인수 순서는 상관없다. 값4개. 

3. GROUPING SETS는 불필요한 개별 레코드들을 모두 없애서 파악이 가능하다. 순서 상관없다. 

반응형

'DB' 카테고리의 다른 글

[SQLD] NULL 정의  (0) 2023.09.07
[SQLD] WINDOW FUNCTION  (0) 2023.09.06
[SQLD] HAVING  (0) 2023.09.04
[SQLD] 필수 암기 개념 (2)  (0) 2023.09.04
[SQLD] 기출 필수 암기 개념  (0) 2023.09.03