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)