次の表を検討してください。
SELECT id, value FROM table ORDER BY id ASC;
+-----+---------+
| id | value |
+-----+---------+
| 12 | 158 |
| 15 | 346 |
| 27 | 334 |
| 84 | 378 |
| 85 | 546 |
+-----+---------+
id
列は自動インクリメントされますが、ギャップが含まれています。value
列は数値です。
上記の2行に関連してvalue
設定することにより、時間の経過に伴う増加を確認したいと思います。これは、行(334)に対して行(546)を設定したい行です。したがって、行に対して計算される値は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
。