- 카테고리:
집계 함수 (일반)
GROUPING_ID¶
GROUP BY 쿼리로 생성된 행에 어떤 식 목록이 그룹화되는지 설명합니다.
GROUPING 의 별칭입니다.
구문¶
GROUPING_ID( <expr1> [ , <expr2> , ... ] )
사용법 노트¶
GROUPING_ID은 집계 함수가 아니라, 집계와 함께 사용할 수 있는 유틸리티 함수로, 행이 생성된 집계의 수준을 결정합니다.
GROUPING_ID(
expr
)는expr
에 그룹화된 행에 대해 0을 반환하고,expr
에 그룹화되지 않은 행에 대해 1을 반환합니다.GROUPING_ID(
expr1
,expr2
, … ,exprN
)은 GROUPING_ID(expr1
) , GROUPING_ID(expr2
) , … , GROUPING_ID(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);
이 예는 col_x에서 그룹화합니다. GROUPING_ID(col_x)
호출은 col_x가 실제로 그룹화 열 중 하나임을 나타내는 0을 반환합니다.
SELECT col_x, sum(col_z), GROUPING_ID(col_x) FROM aggr2 GROUP BY col_x ORDER BY col_x; +-------+------------+--------------------+ | COL_X | SUM(COL_Z) | GROUPING_ID(COL_X) | |-------+------------+--------------------| | 1 | 4 | 0 | | 2 | 24 | 0 | +-------+------------+--------------------+
이 쿼리는 세트별로 그룹화합니다.
SELECT col_x, col_y, sum(col_z), GROUPING_ID(col_x), GROUPING_ID(col_y), GROUPING_ID(col_x, col_y) FROM aggr2 GROUP BY GROUPING SETS ((col_x), (col_y), ()) ORDER BY col_x ASC, col_y DESC; +-------+-------+------------+--------------------+--------------------+---------------------------+ | COL_X | COL_Y | SUM(COL_Z) | GROUPING_ID(COL_X) | GROUPING_ID(COL_Y) | GROUPING_ID(COL_X, COL_Y) | |-------+-------+------------+--------------------+--------------------+---------------------------| | 1 | NULL | 4 | 0 | 1 | 1 | | 2 | NULL | 24 | 0 | 1 | 1 | | NULL | NULL | 28 | 1 | 1 | 3 | | NULL | 2 | 18 | 1 | 0 | 2 | | NULL | 1 | 10 | 1 | 0 | 2 | +-------+-------+------------+--------------------+--------------------+---------------------------+