Hologres兼容PostgreSQL,支持使用标准的PostgreSQL语法进行开发。
命令语法
当前Hologres版本支持的函数是PostgreSQL的一个子集,函数的使用方法请参见有序集合函数。
Hologres已支持的有序集合函数表达式如下。
GROUPING( <expr1> [ , <expr2> , ... ] )
参数说明
GROUPING不是聚合函数,而是可以与聚合一起使用的实用程序函数,用于确定针对如下行生成行的聚合级别:
- GROUPING(
expr
) 若返回0,表示按照expr
行进行了聚合,若返回1,表示未按照expr
行进行聚合。 - GROUPING(
expr1,expr2,...exprN
) 将会返回包含GROUPING(expr1
),GROUPING(),...,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)
- 使用样例
如下内容为输出结果,其中,3表示二进制数11转换为的整数。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;
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)