Hologres兼容PostgreSQL,支持使用标准的PostgreSQL语法进行开发。
GROUPING
当前Hologres版本支持的函数是PostgreSQL的一个子集,函数的使用方法请参见有序集合函数。
语法
GROUPING( <expr1> [ , <expr2> , ... ] );
描述
确定某个列是否被聚合。
参数
expr
表示组的列。说明GROUPING是可以与聚合一起使用的实用程序函数,用于生成列的聚合级别:
GROUPING(
expr
) 若返回0,表示按照expr
列进行了聚合,若返回1,表示未按照expr
列进行聚合。GROUPING(
expr1,expr2,...exprN
) 将会返回包含GROUPING(expr1
),GROUPING(expr2
),...,GROUPING(exprN
)的位向量的整数表示。
示例
创建表并插入数据
CREATE TABLE t1 ( col_x INT, col_y INT, col_z INT ); INSERT INTO t1 VALUES(1, 2, 1), (1, 2, 3) ; INSERT INTO t1 VALUES(2, 1, 10), (2, 2, 11), (2, 2, 3) ; SELECT * FROM t1 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 (5 rows)
使用样例数据。
SELECT col_x, col_y, SUM(col_z), grouping(col_x), grouping(col_y), grouping(col_x, col_y) FROM t1 GROUP BY GROUPING sets ((col_x), (col_y), ()) ORDER BY 1,2;
返回结果如下。其中3表示二进制数11转换为的整数。
col_x | col_y | sum | grouping | grouping | grouping -------+-------+-----+----------+----------+---------- 1 | | 4 | 0 | 1 | 1 2 | | 24 | 0 | 1 | 1 | 1 | 10 | 1 | 0 | 2 | 2 | 18 | 1 | 0 | 2 | | 28 | 1 | 1 | 3 (5 rows)
文档内容是否对您有帮助?