在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;
输出:
相关用法
- 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 CUME_DIST用法及代码示例
注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 PostgreSQL – PERCENT_RANK Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。