我有一个mysql表A,它存储数字和时间戳的序列
value timestamp
12087 2012-01-01 00:00:00
12110 2012-01-02 02:00:00
12223 2012-01-04 03:00:00
12312 2012-01-04 05:00:00
12387 2012-01-04 06:00:00
12388 2012-01-05 01:11:23
...
值和时间戳都是有序的:时间戳越大,值越大,但是它们之间没有其他依赖性。
我需要找出一段时间内按排序顺序排列的值之间的最大差异。在示例中,差异为:
12110-12087=23
12223-12100=13
12312-12223=89
12387-12312=75
12388-12387=1
所以我们有最大的区别89。
问题是:如何为此编写SQL查询代码?要知道,我不想使用完整的产品和/或相关查询,因为表很大。
最佳答案
select
(case when (@prev is null) then 0
else abs(value - @prev) end) as diff
, concat(value, '-', @prev)
, @prev := value
from (select value, dt from table1 order by dt) ordered
order by diff limit 1
将期间限制器添加到from子查询中
编辑,新信息告诉我这是一种不可靠的方法
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html(对于
SELECT @a, @a:=@a+1
,请按ctrl + f)关于mysql - 如何找到不同行中的单元格之间的最大差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10916123/