카테고리:

집계 함수 (일반)

GROUPING

GROUP BY 쿼리로 생성된 행에 어떤 식 목록이 그룹화되는지 설명합니다.

별칭:

GROUPING_ID

구문

GROUPING( <expr1> [ , <expr2> , ... ] ) 
Copy

사용법 노트

GROUPING은 집계 함수가 아니라, 집계와 함께 사용할 수 있는 유틸리티 함수로, 행이 생성된 집계의 수준을 결정합니다.

  • GROUPING(expr)은 expr 에 그룹화된 행에 대해 0을 반환하고, expr 에 그룹화되지 않은 행에 대해 1을 반환합니다.

  • GROUPING(expr1, expr2 , … , exprN)은 GROUPING(expr1) , GROUPING(expr2) , … , GROUPING(exprN)을 포함하는 비트 벡터의 정수 표현을 반환합니다.

세트별로 그룹화합니다.

값이 있는 테이블을 만들고 채웁니다.

CREATE OR REPLACE TABLE aggr2(col_x int, col_y int, col_z int); INSERT INTO aggr2 VALUES(1, 2, 1), (1, 2, 3); INSERT INTO aggr2 VALUES(2, 1, 10), (2, 2, 11), (2, 2, 3); 
Copy

테이블에 값을 표시합니다.

SELECT * FROM aggr2 ORDER BY col_x, col_y, col_z; +-------+-------+-------+ | COL_X | COL_Y | COL_Z | |-------+-------+-------| | 1 | 2 | 1 | | 1 | 2 | 3 | | 2 | 1 | 10 | | 2 | 2 | 3 | | 2 | 2 | 11 | +-------+-------+-------+ 
Copy

출력:

SELECT col_x, col_y, sum(col_z), grouping(col_x), grouping(col_y), grouping(col_x, col_y) FROM aggr2 GROUP BY GROUPING SETS ((col_x), (col_y), ()) ORDER BY 1, 2; +-------+-------+------------+-----------------+-----------------+------------------------+ | COL_X | COL_Y | SUM(COL_Z) | GROUPING(COL_X) | GROUPING(COL_Y) | GROUPING(COL_X, COL_Y) | |-------+-------+------------+-----------------+-----------------+------------------------| | 1 | NULL | 4 | 0 | 1 | 1 | | 2 | NULL | 24 | 0 | 1 | 1 | | NULL | 1 | 10 | 1 | 0 | 2 | | NULL | 2 | 18 | 1 | 0 | 2 | | NULL | NULL | 28 | 1 | 1 | 3 | +-------+-------+------------+-----------------+-----------------+------------------------+ 
Copy