MySQL 数据按 5 分钟间隔分组
本文将解决一个 MySQL 查询问题:如何将数据按特定时间范围内的 5 分钟间隔分组,并将每个间隔的汇总结果显示为单独一行。
改进 MySQL 查询
可以使用 PostgreSQL 或 MySQL 语法对查询进行简单的修改来实现此目标:
PostgreSQL:
<code class="language-sql">SELECT TIMESTAMP WITH TIME ZONE 'epoch' + INTERVAL '1 second' * round(extract('epoch' from timestamp) / 300) * 300 as timestamp, name, count(b.name) FROM time a, id WHERE … GROUP BY round(extract('epoch' from timestamp) / 300), name</code>
MySQL:
<code class="language-sql">SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(timestamp) DIV 300 * 300) as timestamp, name, COUNT(b.name) FROM time a, id WHERE … GROUP BY UNIX_TIMESTAMP(timestamp) DIV 300, name</code>
说明:
修改后的查询包含两个关键更改:
FROM_UNIXTIME(UNIX_TIMESTAMP(timestamp) DIV 300 * 300)
将其转换回时间戳。 (MySQL 使用此方法,PostgreSQL 的方法在 MySQL 中不适用)UNIX_TIMESTAMP(timestamp) DIV 300
) 和名称对数据进行分组,确保每个 5 分钟间隔都被视为一个单独的分组。结果:
通过这些更改,您的查询将生成所需输出,其中结果按 5 分钟间隔分组,每个间隔显示该间隔内“John”出现的总次数。
以上是如何将 MySQL 数据分组为 5 分钟间隔?的详细内容。更多信息请关注PHP中文网其他相关文章!