lag()和lead()的用法区别,详细说明并举例子,用表格展示
时间: 2024-02-21 10:00:18 浏览: 175
`LAG()`和`LEAD()`函数的用法非常类似,但是有一个重要的区别:`LAG()`函数用于获取当前行之前的一行数据,而`LEAD()`函数用于获取当前行之后的一行数据。
下面是一个使用`LAG()`和`LEAD()`函数的例子,假设我们有一个`sales`表,其中记录了每个店铺每个月的销售额,我们可以使用`LAG()`函数计算出每个店铺上个月的销售额,使用`LEAD()`函数计算出每个店铺下个月的销售额,如下所示:
```sql
SELECT store, month, sales,
LAG(sales) OVER (PARTITION BY store ORDER BY month) AS last_month_sales,
LEAD(sales) OVER (PARTITION BY store ORDER BY month) AS next_month_sales
FROM sales;
```
上面的查询中,我们使用了`LAG()`函数获取了每个店铺前一个月的销售额,使用了`LEAD()`函数获取了每个店铺下一个月的销售额。
下面是一个表格展示,展示了`LAG()`和`LEAD()`函数的用法和区别:
| 序号 | 月份 | 销售额 | 上个月销售额 | 下个月销售额 |
| ---- | ---- | ------ | ------------ | ------------ |
| 1 | 1月 | 1000 | NULL | 1500 |
| 2 | 2月 | 1500 | 1000 | 1200 |
| 3 | 3月 | 1200 | 1500 | 1800 |
| 4 | 4月 | 1800 | 1200 | 2000 |
从上面的表格可以看出,`LAG()`函数用于获取当前行之前的一行数据,因此第一行的上个月销售额为`NULL`,第二行的上个月销售额为1000,以此类推;而`LEAD()`函数用于获取当前行之后的一行数据,因此第一行的下个月销售额为1500,最后一行的下个月销售额为NULL。
阅读全文