mysql - 如何找到不同行单元格之间的最大差异

标签 mysql sql

我有一个 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 (ctrl + f 表示 SELECT @a, @a:=@a+1)

关于mysql - 如何找到不同行单元格之间的最大差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10916123/

相关文章:

php - 使用 Laravel Eloquent 进行缓慢的 MySQL 查询

javascript - Angularjs 可折叠表与 php mysql

mysql - 从一个表中选择所有行,并根据第三个表从第二个表中选择总和

mysql - sql:使用同一键左连接多表

mysql - 如何从 varchar 转换为 float 并忽略非数字字符?

sql - 从 column1 中删除最后 2 位数字并将这 2 位数字附加到 column2

mysql - 如何查询不在表中的行?

php - 复制sql表中的一行

MySQL Workbench 忽略外键

mysql - 与昨天相比没有 LAG 分析功能的用户百分比