LAG
更新时间:2025-10-16
描述
LAG() 是一个窗口函数,用于访问当前行之前的行数据,而无需进行自连接。它可以获取分区内当前行之前第 N 行的值。
语法
SQL
1LAG ( <expr>, <offset>, <default> )
参数
| 参数 | 说明 |
|---|---|
| expr | 需要获取值的表达式 |
| offset | 向前偏移的行数。 |
| default | 当偏移超出窗口范围时返回的默认值 |
返回值
返回与输入表达式相同的数据类型。
举例
计算每个销售员当前销售额与前一天销售额的差值:
SQL
1select stock_symbol, closing_date, closing_price,
2lag(closing_price,1, 0) over (partition by stock_symbol order by closing_date) as "yesterday closing"
3from stock_ticker
4order by closing_date;
Text
1+--------------+---------------------+---------------+-------------------+
2| stock_symbol | closing_date | closing_price | yesterday closing |
3| ------------ | ------------------- | ------------- | ----------------- |
4| JDR | 2014-09-13 00:00:00 | 12.86 | 0 |
5| JDR | 2014-09-14 00:00:00 | 12.89 | 12.86 |
6| JDR | 2014-09-15 00:00:00 | 12.94 | 12.89 |
7| JDR | 2014-09-16 00:00:00 | 12.55 | 12.94 |
8| JDR | 2014-09-17 00:00:00 | 14.03 | 12.55 |
9| JDR | 2014-09-18 00:00:00 | 14.75 | 14.03 |
10| JDR | 2014-09-19 00:00:00 | 13.98 | 14.75 |
11+--------------+---------------------+---------------+-------------------+
