2017-07-27 38 views
1

我希望有人能与棘手的问题有所帮助:组相邻时间值

我怎样才能“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 

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

我试图重新格式化日期以便能够在没有秒的情况下进行“GROUP BY”,但这不适用于第一个结果。

我的MySQL的编程技能是有限的,但它可以用下面的步骤来完成:

  1. SELECT和ORDER BY“当”
  2. 围棋虽然值和当前和以前的“当”值之间告诉差异,如果在范围内,则GROUP,如果不输出新行。

任何想法?

+0

只要(HAVING?)“TIMESTAMPDIFF(SECOND,when,last_when)<期望间隔”,我们可以设置像“last_when”(始终来自前一行)和GROUP BY的变量。结果应包含来自MIN(Value)行的“when”值。 –

回答

0

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