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


PostgreSQL PERCENT_RANK用法及代码示例


在PostgreSQL中PERCENT_RANK()函数用于计算一组值中某个值的相对等级。PERCENT_RANK()函数类似于CUME_DIST()函数。 PERCENT_RANK()函数评估值在一组值中的相对位置。

下面说明了PERCENT_RANK()函数的语法:

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

让我们分析以上语法:

  • 这个分区依据子句将行分为多个分区,PERCENT_RANK()函数已应用。
  • 这个排序子句指定应用该函数的每个分区中的行顺序。
  • 这个PERCENT_RANK()函数返回大于0且小于或等于1的结果。

范例1:

首先,创建两个名为product和product_groups的表:



CREATE TABLE product_groups (
    group_id serial PRIMARY KEY,
    group_name VARCHAR (255) NOT NULL
);

CREATE TABLE products (
    product_id serial PRIMARY KEY,
    product_name VARCHAR (255) NOT NULL,
    price DECIMAL (11, 2),
    group_id INT NOT NULL,
    FOREIGN KEY (group_id) REFERENCES product_groups (group_id)
);

现在向其中添加一些数据:

INSERT INTO product_groups (group_name)
VALUES
    ('Smartphone'),
    ('Laptop'),
    ('Tablet');

INSERT INTO products (product_name, group_id, price)
VALUES
    ('Microsoft Lumia', 1, 200),
    ('HTC One', 1, 400),
    ('Nexus', 1, 500),
    ('iPhone', 1, 900),
    ('HP Elite', 2, 1200),
    ('Lenovo Thinkpad', 2, 700),
    ('Sony VAIO', 2, 700),
    ('Dell Vostro', 2, 800),
    ('iPad', 3, 700),
    ('Kindle Fire', 3, 150),
    ('Samsung Galaxy Tab', 3, 200);

以下语句使用PERCENT_RANK()函数用于计算2019年每位员工的销售百分比:

SELECT 
    name,
    amount,
    PERCENT_RANK() OVER (
        ORDER BY amount
    )
FROM 
    sales_stats
WHERE 
    year = 2019;

输出:

范例2:

以下声明使用PERCENT_RANK()函数计算销售员工在2018年和2019年的销售额百分比:

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

输出:

相关用法


注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 PostgreSQL – PERCENT_RANK Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。