カテゴリ:

集計関数 (一般)

GROUPING_ID

GROUP BY クエリによって生成された行にグループ化される式のリストを記述します。

GROUPING のエイリアス。

構文

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

使用上の注意

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);
Copy

この例では、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 |
+-------+------------+--------------------+
Copy

このクエリはセットごとにグループ化します。

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 |
+-------+-------+------------+--------------------+--------------------+---------------------------+
Copy