sql 的lag lead举例
时间: 2024-09-22 20:07:41 浏览: 42
sql语言资源文件pdf
SQL的`LAG()`和`LEAD()`是窗口函数,它们常用于分析数据集中每个行前面或后面的值。这两个函数主要用于处理分组后的行,特别是当需要查看当前行与其前一行或后一行的数据对比时非常有用。
举个例子:
假设我们有一个销售表`sales`,包含产品ID、订单日期和销售额等字段:
```sql
CREATE TABLE sales (
product_id INT,
order_date DATE,
sale_amount DECIMAL(10,2)
);
```
如果你想计算每个产品的上一个订单日期和下一个订单日期,你可以这样做:
```sql
SELECT
product_id,
order_date,
LAG(order_date) OVER (PARTITION BY product_id ORDER BY order_date) AS prev_order_date,
LEAD(order_date) OVER (PARTITION BY product_id ORDER BY order_date) AS next_order_date,
sale_amount
FROM sales;
```
在这个查询中:
- `LAG(order_date)` 返回当前行的产品ID下的`order_date`,但位于当前行之前。
- `LEAD(order_date)` 返回当前行的产品ID下的`order_date`,但位于当前行之后。
结果将包括每个产品的销售信息及其前后相邻的订单日期。
阅读全文