在PostgreSQL中,ROW_NUMBER()函数用于为结果集中的每一行分配一个唯一的整数值。
用法:
ROW_NUMBER() OVER(
[PARTITION BY column_1, column_2, …]
[ORDER BY column_3, column_4, …]
)
让我们分析以上语法:
- 一组行ROW_NUMBER()函数操作称为窗口。
- 这个分区依据子句将窗口分为较小的集合或分区。
- 这个排序内的子句OVER子句确定编号分配的顺序。
范例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);
在以下查询中,我们更改了排序product_name的子句,ROW_NUMBER()函数根据产品名称顺序将整数值分配给每一行
SELECT product_id, product_name, group_id, ROW_NUMBER () OVER ( ORDER BY product_name ) FROM products;
输出:
范例2:
以下查询使用ROW_NUMBER()函数将整数分配给与产品展示表:
SELECT DISTINCT price, ROW_NUMBER () OVER (ORDER BY price) FROM products ORDER BY price;
输出:
相关用法
- 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 – ROW_NUMBER Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。