我在MySQL数据库中有一个表:
id ts number
1 07-10-2017 00:00 200
2 07-10-2017 00:01 300
3 07-10-2017 00:02 700
4 07-10-2017 00:03 1000
我想计算两个连续行之间的差异,我需要输出格式如:
id ts number o/p
1 07-10-2017 00:00 200 0
2 07-10-2017 00:01 300 100
3 07-10-2017 00:02 700 400
4 07-10-2017 00:03 1000 300
我希望o / p列的第一个值为0,其余是差异。
任何帮助都将不胜感激。
答案 0 :(得分:3)
使用自我加入:
SELECT
t1.ts,
t1.number,
t1.number - COALESCE(t2.number, t1.number) AS diff
FROM yourTable t1
LEFT JOIN yourTable t2
ON t1.id = t2.id + 1
ORDER BY
t1.ts;
答案 1 :(得分:1)
您可以使用本地变量执行此操作:
SET @tmp := -1;
SELECT id,
ts ,
number,
if(@tmp =-1, 0, number - @tmp) as 'o/p',
@tmp:=number as dummy
FROM YourTable
Order by ts;