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