mysql lag函数
时间: 2023-08-19 19:28:49 浏览: 153
mysql计算时间差函数
在 MySQL 中,LAG() 函数用于获取结果集中指定列的前一行的值。该函数常用于计算行与行之间的差值或改变量。
LAG() 函数的语法如下:
```
LAG(column, [offset[, default_value]]) OVER (ORDER BY order_column)
```
其中,参数说明如下:
- column:要获取前一行值的列名或表达式。
- offset:指定前几行,如果不指定,则默认为 1。
- default_value:如果前一行不存在,则使用该值代替。如果不指定,则默认为 NULL。
- ORDER BY:用于排序的列或表达式。
例如,假设有以下表格:
```
+----+--------+--------+
| id | salary | month |
+----+--------+--------+
| 1 | 1000 | 202101 |
| 2 | 1200 | 202102 |
| 3 | 1500 | 202103 |
| 4 | 1600 | 202104 |
+----+--------+--------+
```
我们可以使用 LAG() 函数计算每个月份的工资变化量:
```
SELECT month, salary, LAG(salary) OVER (ORDER BY month) AS previous_salary,
salary - LAG(salary) OVER (ORDER BY month) AS salary_change
FROM salary_table;
```
运行结果如下:
```
+--------+--------+-----------------+---------------+
| month | salary | previous_salary | salary_change |
+--------+--------+-----------------+---------------+
| 202101 | 1000 | NULL | NULL |
| 202102 | 1200 | 1000 | 200 |
| 202103 | 1500 | 1200 | 300 |
| 202104 | 1600 | 1500 | 100 |
+--------+--------+-----------------+---------------+
```
可以看到,我们获取了每个月份的工资变化量,并且使用 LAG() 函数获取了上个月的工资值。
阅读全文