pgsql 开窗函数lead 和lag 例子
时间: 2025-06-28 11:17:36 浏览: 10
### PostgreSQL 开窗函数 `LEAD` 和 `LAG` 使用示例
#### 定义与功能
开窗函数 `LEAD` 和 `LAG` 是用于访问当前行之前或之后的行数据而不改变查询结果集的功能。这些函数特别适用于时间序列分析、趋势预测以及比较相邻记录的情况。
对于 `LEAD` 函数而言,可以从后续的一行或多行获取指定列的数据;而 `LAG` 则是从前导的一行或多行列读取相应字段的信息[^1]。
#### 实际应用案例
假设有一个销售表 `sales`,其中包含日期 (`sale_date`) 及销售额 (`amount`) 字段:
| sale_id | sale_date | amount |
|---------|-----------------|--------|
| 1 | 2023-07-01 | 150 |
| 2 | 2023-07-02 | 200 |
| 3 | 2023-07-03 | 250 |
为了计算每一天相对于前一天的增长量,可以使用如下 SQL 查询语句来实现这一目标:
```sql
SELECT
sale_date,
amount AS current_amount,
LAG(amount, 1) OVER (ORDER BY sale_date) AS previous_day_amount,
LEAD(amount, 1) OVER (ORDER BY sale_date) AS next_day_amount,
amount - COALESCE(LAG(amount, 1) OVER (ORDER BY sale_date), 0) AS day_over_day_growth
FROM sales;
```
此查询的结果将会显示每一笔交易当天金额(`current_amount`)及其前一天(`previous_day_amount`)和后一天(`next_day_amount`)的具体数值,并通过简单的算术运算得出日增长额(`day_over_day_growth`)。
上述例子展示了如何利用 `LEAD` 和 `LAG` 来简化跨行数据分析的任务,在实际业务场景中有广泛的应用价值.
阅读全文
相关推荐

















