考虑下表:
SELECT id, value FROM table ORDER BY id ASC;
+-----+---------+
| id | value |
+-----+---------+
| 12 | 158 |
| 15 | 346 |
| 27 | 334 |
| 84 | 378 |
| 85 | 546 |
+-----+---------+
该id
列是自动递增的,但包含间隙。该value
列是数字。
我想通过与上面两行相关的设置来查看value
随时间的增加。那是我想设置行(546)相对于行(334)的行。因此,要为行计算的值是 546/334=1.63473。value
value
id=85
value
id=85
value
id=27
id=85
这是我想要达到的结果:
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
行不通的。