在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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。