Continuous Challenge

[불친절한 SQL 프로그래밍] [10장] GROUP BY절과 HAVING절 - 10.2 GROUP BY 절의 확장 기능(ROLL UP, CUBE, GROUPING SETS) 본문

Study/불친절한 SQL 프로그래밍

[불친절한 SQL 프로그래밍] [10장] GROUP BY절과 HAVING절 - 10.2 GROUP BY 절의 확장 기능(ROLL UP, CUBE, GROUPING SETS)

응굥 2019. 12. 3. 15:16
728x90
728x90

p.204

 

10.2.1 ROLLUP

ROLLUP은 지정한 표현식의 계층별 소계와 총계를 집계한다.

ROLLUP(expression_list [, expression_list] ...)

 

ROLLUP은 아래와 같이 동작한다. expr을 뒤쪽부터 하나씩 제거하는 방식이다. 결과에서 (a, b, c)는 a, b, c의 소계, ()는 총계를 의미한다. 

GROUP BY 결과
ROLLUP (a) (a), ( )
ROLLUP (a, b) (a, b), (a), ( )
ROLLUP (a, b, c) (a, b, c), (a, b), (a), ( )

deptno별 소계와 총계를 집계한다.
deptno, job 별, deptno별 소계와 총계를 집계한다.

 

10.2.2 CUBE

CUBE는 지정한 표현식의 모든 조합을 집계한다.

CUBE (expression_list [, expression_list] ...)

 

CUBE는 아래와 같이 동작한다.

GROUP BY 결과
CUBE (a) (a), ( )
CUBE (a, b) (a, b), (a), (b), ( )
CUBE (a, b, c) (a, b, c), (a, b), (a, c), (b, c), (a), (b), (c), ( )

표현식이 1개면 ROLLUP과 결과가 동일하다.
deptno, job별, deptno별, job별 소계와 총계를 집계한다.

 

10.2.3 GROUPING SETS

GROUPING SETS은 지정한 행 그룹으로 행을 집계한다. 행 그룹으로 ROLLUP과 CUBE를 사용할 수도 있다.

GROUPING SETS ({rollup_cube_clause | grouping_expression_list})

 

GROUPING SETS은 아래와 같이 동작한다.

GROUP BY 결과
GROUPING SETS (a, b) (a), (b)
GROUPING SETS (a, b, ( )) (a), (b), ( )
GROUPING SETS (a, ROLLUP (b)) (a), (b), ( )
GROUPING SETS (a, ROLLUP (b, c)) (a), (b, c), (b), ( )
GROUPING SETS (a, b, ROLLUP (c)) (a), (b), (c), ( )

 

 

10.2.6 관련 함수

 

GROUPING 함수

GROUPING 함수는 expr이 행 그룹에 포함되면 0, 포함되지 않으면 1을 반환한다. 널로 반환되는 행 그룹에 값을 설정하거나 결과의 정렬 순서를 조정할 수 있다.

GROUPING (expr)

c1 열은 () 행 그룹, c2 열은 deptno 행 그룹과 () 행 그룹에 포함되지 않기 때문에 각각의 행 그룹에서 1이 반환된다.

728x90
728x90
Comments