- 类别:
聚合函数 (通用)
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 确实是分组列之一。
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 | +-------+-------+------------+--------------------+--------------------+---------------------------+