在SQL中,`LAG()` 和 `LEAD()` 是窗口函数,它们用于访问行与其相邻行的数据。这两个函数在进行数据比较和分析时非常有用,尤其是在需要根据行的相对位置进行操作的场景中。
### LAG()
`LAG()` 函数用于访问当前行的前面的行中的数据。你可以指定你想要向前查看多少行,并且可以对返回的值进行各种操作。
语法:
```sql
LAG([expression] [, offset] [, default_value]) OVER ([PARTITION BY column] ORDER BY column)
```
- `expression`:你想要检索的列或表达式。
- `offset`(可选):向前查看的行数,默认为1。
- `default_value`(可选):如果没有足够的行可以查看,则返回的默认值。
- `PARTITION BY`(可选):在应用 `ORDER BY` 之前,先按指定的列对数据进行分区。
- `ORDER BY`:定义数据的排序方式。
### LEAD()
`LEAD()` 函数与 `LAG()` 相对,它用于访问当前行之后的行中的数据。
语法:
```sql
LEAD([expression] [, offset] [, default_value]) OVER ([PARTITION BY column] ORDER BY column)
``