當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


PostgreSQL CUME_DIST用法及代碼示例

在PostgreSQL中CUME_DIST()函數用於計算一組值中某個值的累積分布。換句話說,它返回一個值在一組值中的相對位置。

用法:
CUME_DIST() OVER (
    [PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
)

讓我們分析以上語法:

  • PARTITION BY子句將行分為應用該函數的多個分區。 PARTITION BY子句是可選的。如果用戶跳過它,則CUME_DIST()函數會將整個結果集視為一個分區。
  • 這個排序子句對每個分區中的行進行排序CUME_DIST()函數已應用。

返回值:

這個CUME_DIST() a 雙精度大於0且小於或等於1的值:

0 < CUME_DIST() <= 1

該函數針對相同的聯係值返回相同的累積分布值。

範例1:



第一創建一個名為sales_stats

CREATE TABLE sales_stats(
    name VARCHAR(100) NOT NULL,
    year SMALLINT NOT NULL CHECK (year > 0),
    amount DECIMAL(10, 2) CHECK (amount >= 0),
    PRIMARY KEY (name, year)
);

其次,將一些行插入sales_stats 表:

INSERT INTO 
    sales_stats(name, year, amount)
VALUES
    ('Raju kumar', 2018, 120000),
    ('Alibaba', 2018, 110000),
    ('Gabbar Singh', 2018, 150000),
    ('Kadar Khan', 2018, 30000),
    ('Amrish Puri', 2018, 200000),
    ('Raju kumar', 2019, 150000),
    ('Alibaba', 2019, 130000),
    ('Gabbar Singh', 2019, 180000),
    ('Kadar Khan', 2019, 25000),
    ('Amrish Puri', 2019, 270000);

以下查詢返回2018年每位銷售員工的銷售額百分比:

SELECT 
    name,
    year, 
    amount,
    CUME_DIST() OVER (
        ORDER BY amount
    ) 
FROM 
    sales_stats
WHERE 
    year = 2018;

輸出:

範例2:

以下查詢使用CUME_DIST()函數計算2018年和2019年每個銷售員工的銷售百分比:

SELECT 
    name,
    year,
    amount,
    CUME_DIST() OVER (
        PARTITION BY year
        ORDER BY amount
    )
FROM 
    sales_stats;

輸出:

相關用法


注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – CUME_DIST Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。