在PostgreSQL中,LEAD()函数用于以特定的物理偏移量访问当前行之后的行。PostgreSQL LEAD()函数提供对以指定物理偏移量访问当前行之后的行的访问。这意味着从当前行开始,LEAD()函数可以访问下一行,下一行之后的行等等的数据。 LEAD()函数对于将当前行的值与当前行之后的行的值进行比较非常有用。
下面说明了LEAD()函数的语法:
用法: LEAD(expression [, offset [, default_value]]) OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ... )
让我们分析以上语法:
- 这个表达根据与当前行的指定偏移量针对下一行进行评估。的表达可以是必须计算为单个值的列,表达式,子查询。
- 偏移量是一个正整数,它指定从当前行转发访问的行数。偏移量可以是表达式,子查询或列。偏移量默认为1。
- PARTITION BY子句将行划分为应用了LEAD()函数的分区。默认情况下,如果省略PARTITION BY子句,则整个结果集是单个分区。
- 这个排序子句指定每个分区中行的排序顺序LEAD()函数已应用。
范例1:
让我们为演示建立一个新表,名称为sales:
CREATE TABLE sales( year SMALLINT CHECK(year > 0), group_id INT NOT NULL, amount DECIMAL(10, 2) NOT NULL, PRIMARY KEY(year, group_id) );
现在向其中插入一些数据:
INSERT INTO sales(year, group_id, amount) VALUES (2018, 1, 1474), (2018, 2, 1787), (2018, 3, 1760), (2019, 1, 1915), (2019, 2, 1911), (2019, 3, 1118), (2020, 1, 1646), (2020, 2, 1975), (2020, 3, 1516);
以下查询使用LEAD()函数返回当年和下一年的销售额:
WITH cte AS ( SELECT year, SUM(amount) amount FROM sales GROUP BY year ORDER BY year ) SELECT year, amount, LEAD(amount, 1) OVER ( ORDER BY year ) next_year_sales FROM cte;
输出:
范例2:
以下语句使用LEAD()函数将每个产品组的当年销售额与下一年的销售额进行比较:
SELECT year, amount, group_id, LEAD(amount, 1) OVER ( PARTITION BY group_id ORDER BY year ) next_year_sales FROM sales;
输出:
相关用法
- 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 NTILE用法及代码示例
- PostgreSQL CUME_DIST用法及代码示例
- PostgreSQL RANK用法及代码示例
注:本文由纯净天空筛选整理自RajuKumar19大神的英文原创作品 PostgreSQL – LEAD Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。