0
我試圖讓滯後值(當前行 - 最後一行)模擬滯後函數從下表:在MySQL
+-------+------------+-------------+---------------------+
| index | codigowine | preconormal | timestamp |
+-------+------------+-------------+---------------------+
| 2 | 10088 | 65.60 | 2014-11-18 23:39:08 |
| 1005 | 10088 | 62.60 | 2014-11-20 11:00:14 |
| 2028 | 10088 | 62.60 | 2014-11-21 09:00:13 |
| 3092 | 10088 | 62.60 | 2014-11-22 09:00:12 |
| 5083 | 10088 | 69.00 | 2014-11-24 09:00:13 |
+-------+------------+-------------+---------------------+
預期的輸出應該是:
+-------+------------+-------------+---------------------+-----------+
| index | codigowine | preconormal | timestamp | lag_price |
+-------+------------+-------------+---------------------+-----------+
| 2 | 10088 | 65.60 | 2014-11-18 23:39:08 | 0.00 |
| 1005 | 10088 | 62.60 | 2014-11-20 11:00:14 | -3.00 |
| 2028 | 10088 | 62.60 | 2014-11-21 09:00:13 | 0.00 |
| 3092 | 10088 | 62.60 | 2014-11-22 09:00:12 | 0.00 |
| 5083 | 10088 | 69.00 | 2014-11-24 09:00:13 | 6.40 |
+-------+------------+-------------+---------------------+-----------+
我我看過一些例子,通過設置一個變量並計算行之間的差異來模擬MySQL上的滯後函數,但我不能得到它的工作:
SET @price=0;
select index,codigowine,@price price_lag, @price:=preconormal curr_price from precos order by codigowine, timestamp;
這是一個SQL fiddle。
其他的可能性是計算使用PHP或添加一個新表,並通過python編程,但我試圖避免這些可能性,如果我能夠通過SQL來執行此操作。
在執行'@price:='更新之前,只需將'preconormal - @price as lag_price'放入字段列表中。 MySQL處理左側和右側的變量和變量賦值 – 2014-11-24 14:27:45