当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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