全部產品
Search
文件中心

Hologres:有序集合函數

更新時間:Nov 01, 2024

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)的位向量的整數表示。

  • 樣本

    1. 建立表並插入資料

      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)
    2. 使用範例資料。

      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)