在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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。