考慮下表:如何在MySQL中滯後列?
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
相同的表即可。
有一個在SQL標準滯後()函數,但MySQL不支持這一點。 – 2011-03-30 07:40:33