考虑下面的表格:
SELECT id, value FROM table ORDER BY id ASC;
+-----+---------+
| id | value |
+-----+---------+
| 12 | 158 |
| 15 | 346 |
| 27 | 334 |
| 84 | 378 |
| 85 | 546 |
+-----+---------+
id
列是自增的,但存在间隔。 value
列是数字。
我想通过将value
与前两行的value
进行比较来观察随时间增加的value
。也就是说,对于id=85
的行,我想将id=85
(546)的value
设置为相对于id=27
(334)的value
。因此,要计算id=85
行的值为546/334=1.63473。
这就是我想要实现的结果:
SELECT id, value, ...;
+-----+---------+---------------------+
| id | value | value/lag(value, 2) | (the syntax value/lag(value, 2) is made up)
+-----+---------+---------------------+
| 12 | 158 | NULL |
| 15 | 346 | NULL |
| 27 | 334 | 2.11392 | (334/158=2.11392)
| 84 | 378 | 1.09248 | (378/346=1.09248)
| 85 | 546 | 1.63473 | (546/334=1.63473)
+-----+---------+---------------------+
如何在MySQL中执行这样的滞后操作?
请注意,id
列包含间隔,因此仅使用t1.id = t2.id - 2
在同一表上连接将无法正常工作。