首页 >数据库 >mysql教程 >在 MySQL 中处理日期时间数据时如何实现 GROUP BY 3 秒的精度?

在 MySQL 中处理日期时间数据时如何实现 GROUP BY 3 秒的精度?

Susan Sarandon
Susan Sarandon原创
2024-10-24 06:59:02913浏览

How to Achieve GROUP BY Precision of  /- 3 Seconds When Working with DateTime Data in MySQL?

MySQL GROUP BY DateTime,精度为/- 3 秒

问题陈述

给定包含 ID、时间戳和标题列的表,目标是将 3 秒内出现的记录分组。在这种情况下,时间戳为 15:00:00 和 15:00:02 的行将被分组在一起。

解决方案

而不是识别基于链的开头对于各个行,让我们关注链接时间戳。

查询 1:确定链起始时间戳

<code class="mysql">SELECT DISTINCT Timestamp
FROM Table a
LEFT JOIN Table b
ON (b.Timestamp >= a.Timestamp - INTERVAL 3 SECONDS
    AND b.Timestamp < a.Timestamp)
WHERE b.Timestamp IS NULL

此查询返回在其上方没有时间戳的时间戳3 秒,表示链的开始。

查询 2:将记录与链开始时间戳关联

<code class="mysql">SELECT Table.id, MAX(StartOfChains.TimeStamp) AS ChainStartTime
FROM Table
JOIN ([query #1]) StartOfChains
ON Table.Timestamp >= StartOfChains.TimeStamp
GROUP BY Table.id</code>

对于每一行,此查询标识最大的链- 开始时间戳(出现在行时间戳之前)。

最终 GROUP BY 操作

<code class="mysql">SELECT COUNT(*) --or whatever
FROM Table
JOIN ([query #2]) GroupingQuery
ON Table.id = GroupingQuery.id
GROUP BY GroupingQuery.ChainStartTime</code>

此查询使用查询 2 中的 GroupingQuery 表根据以下条件对记录进行分组ChainStartTime 列,启用每个时间组内的聚合计算。

以上是在 MySQL 中处理日期时间数据时如何实现 GROUP BY 3 秒的精度?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn