mysql 如何按时间维度每 5s 统计一次数据呢?

2021 年 9 月 22 日
 zhangshaohan

有个表有创建时间字段,按照这个字段,每隔 5 秒统计一次这期间的数据增量,如果没有新增,则为 0,这种 SQL 怎么写呢?

3251 次点击
所在节点    MySQL
13 条回复
myd
2021 年 9 月 22 日
select count(*) from xxx group by floor(时间戳 /5)
zhangshaohan
2021 年 9 月 22 日
@myd

2021-09-22 13:45:29 1
2021-09-22 13:45:30 2
2021-09-22 13:46:00 4
2021-09-22 13:46:07 1
2021-09-22 13:46:30 2

不是每秒钟都有数据,有没有办法能整齐的每五秒分割一次来进行统计呢?
myd
2021 年 9 月 22 日
@Geekerstar 在程序中补齐,不一定要在数据库中实现。
deltadawn
2021 年 9 月 22 日
INTERVAL()
Pipecraft
2021 年 9 月 22 日
试了一下,使用 `DATE_ADD(created_at, INTERVAL - SECOND(created_at) % 5 SECOND)` 可以按照每分钟的 0,5,10.. 秒为单位统计。没有数据的时间段需要在程序补齐。

由于无法贴出代码,我把完整的 SQL 贴在了这里 pzwd.net/d/31/2 。
wellsc
2021 年 9 月 22 日
用 Prometheus 吧
adgad2
2021 年 9 月 22 日
遇到个类似需求,最后建表写个定时任务完事
haochen2
2021 年 9 月 22 日
这种统计的还是多余建个表来存储吧
zhangshaohan
2021 年 9 月 22 日
@Pipecraft 感谢大佬
zhangshaohan
2021 年 9 月 22 日
@myd 嗯嗯,在程序中处理了
zhangshaohan
2021 年 9 月 22 日
@Pipecraft 大佬的网站很棒,收藏了
beginor
2021 年 9 月 22 日
不知道 mysql 有没有类似 PostgreSQL 生成序列的概念,有的话就很容易统计了
Saxton
2021 年 9 月 23 日
我做过这个需求,先 count 查出来,然后用程序补充时间就可以了 mysql 只负责查 不负责逻辑的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/803372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX