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)
使用样例
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)
文档内容是否对您有帮助?