在PostgreSQL中,LAST_VALUE()函数返回结果集的有序分区中的最后一个值。
用法: LAST_VALUE ( expression ) OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ... )
让我们分析以上语法:
- 表达式可以是根据结果集的有序分区中最后一行的值求值的表达式,列或子查询。表达式必须返回单个值。
- 这个分区依据子句将结果集的行划分为分区,LAST_VALUE()函数已应用。
- 这个排序子句指定每个分区中行的排序顺序LAST_VALUE()函数已应用。
- 这个frame_clause定义当前分区中行的子集,LAST_VALUE()函数已应用。
范例1:
首先,创建两个表命名产品展示 和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);
以下查询使用LAST_VALUE()函数返回所有产品以及价格最高的产品:
SELECT product_id, product_name, price, LAST_VALUE(product_name) OVER( ORDER BY price RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) highest_price FROM products;
输出:
范例2:
以下查询使用LAST_VALUE()用于将所有产品连同每个产品组中最昂贵的产品一起退回的函数:
SELECT product_id, product_name, group_id, price, LAST_VALUE(product_name) OVER( PARTITION BY group_id ORDER BY price RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) highest_price FROM products;
输出:
相关用法
- 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 LEAD用法及代码示例
- PostgreSQL NTILE用法及代码示例
- PostgreSQL CUME_DIST用法及代码示例
- PostgreSQL RANK用法及代码示例
注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 PostgreSQL – LAST_VALUE Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。