- カテゴリ:
集計関数 (一般)
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)
を呼び出すと0が返され、col_xが実際にグループ化列の1つであることを示します。
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 | +-------+-------+------------+--------------------+--------------------+---------------------------+