按相邻时间值分组

时间:2017-07-27 12:35:56

标签: mysql datetime group-by distance mysql-5.7

我希望有人可以帮助解决这个棘手的问题:

如何“GROUP BY”某些行在时间戳之间具有可配置的相邻距离?

示例表:

ID     | Value | When
1      | 5     | 2017-06-30 11:45:55
2      | 9     | 2017-06-30 11:45:56
3      | 0     | 2017-06-30 11:45:59
4      | 2     | 2017-06-30 11:46:02
5      | 7     | 2017-06-30 17:19:22
6      | 7     | 2017-06-30 17:19:22
7      | 3     | 2017-06-30 17:19:22
8      | 6     | 2017-06-30 17:19:22

期望的结果:

ID     | Value | When
3      | 0     | 2017-06-30 11:45:59
7      | 3     | 2017-06-30 17:19:22

结果应找到相邻的条目(在示例中为两组,每组四行),并告诉最低的“值”。 相邻距离可以是任何值,例如一分钟或十分钟。

我尝试重新格式化日期以便能够在没有秒的情况下“GROUP BY”但这对第一个结果不起作用。

我的MySQL编程技巧有限,但可以通过以下步骤完成:

  1. SELECT和ORDER BY“When”
  2. 通过值并告诉当前和之前“When”值之间的差异,如果在范围内,则为GROUP,如果不输出新行。
  3. 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最后我决定编写一个C程序,它使用DB中的视图来获取原始排序数据。如果时间戳之间的差异在期望的限制内,则程序然后输出组。 然后将输出放回数据库中。