【问题标题】:Group by adjacent time values按相邻时间值分组
【发布时间】:2023-03-04 23:47:02
【问题描述】:

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

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

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

我尝试重新格式化日期,以便能够在没有几秒钟的情况下“分组”,但这不适用于第一个结果。

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

  1. 按“时间”选择和排序
  2. 检查值并区分当前值和之前的“时间”值之间的差异,如果在范围内,则为 GROUP,如果不输出新行。

有什么想法吗?

【问题讨论】:

  • 如果我们可以设置一个像“last_when”这样的变量(总是从前一行)和GROUP BY,只要(HAVING?)“TIMESTAMPDIFF(SECOND,when,last_when)

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多