在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;
輸出:
相關用法
- PostgreSQL ARRAY_AGG()用法及代碼示例
- PostgreSQL AVG()用法及代碼示例
- PostgreSQL COUNT()用法及代碼示例
- PostgreSQL STRING_AGG()用法及代碼示例
- PostgreSQL MAX()用法及代碼示例
- PostgreSQL MIN()用法及代碼示例
- PostgreSQL SUM()用法及代碼示例
- PostgreSQL DENSE_RANK用法及代碼示例
- PostgreSQL NULLIF()用法及代碼示例
- PostgreSQL Drop用法及代碼示例
- PostgreSQL FIRST_VALUE用法及代碼示例
- PostgreSQL LAST_VALUE用法及代碼示例
- PostgreSQL LEAD用法及代碼示例
- PostgreSQL NTILE用法及代碼示例
- PostgreSQL RANK用法及代碼示例
注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – CUME_DIST Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。