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)
文檔內容是否對您有幫助?