我有一个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/

10-09 00:28
查看更多