全部產品
Search
文件中心

PolarDB:分析函數(RATIO_TO_REPORT)

更新時間:Mar 13, 2025

RATIO_TO_REPORT是一個分析函數,用於計算某一列的值在指定分組中所佔的比率。

文法

RATIO_TO_REPORT(col) over ([partition by xxx]) ; 
  • col:需要查詢的列,如果該值為空白,則比率的值也為空白。

  • [partition by xxx]:指定的分組,如果省略該子句,則會計算當前值占指定分組中所有值的比率。

樣本

  1. 準備測試表。

    CREATE TABLE rtp (
        a INT,
        b INT,
        c INT
    );
    
    INSERT INTO rtp (a, b, c) VALUES
    (1, 5, 4),
    (1, 5, 6),
    (2, 3, 10),
    (2, 7, NULL);
  2. 分析函數RATIO_TO_REPORT使用。

    • 計算全表中b值的比例。

      SELECT *, ratio_to_report(b) OVER () FROM rtp;

      返回結果如下:

       a | b | c  | ratio_to_report 
      ---+---+----+-----------------
       1 | 5 |  4 |            0.25
       1 | 5 |  6 |            0.25
       2 | 3 | 10 |            0.15
       2 | 7 |    |            0.35
      (4 rows)
    • 對每個a的分組計算比例,計算每個分組內的b值占該組總和的比例。

      SELECT *, ratio_to_report(b) OVER (PARTITION BY a) FROM rtp;

      返回結果如下:

       a | b | c  | ratio_to_report 
      ---+---+----+-----------------
       1 | 5 |  4 |             0.5
       1 | 5 |  6 |             0.5
       2 | 3 | 10 |             0.3
       2 | 7 |    |             0.7
      (4 rows)