有个表有创建时间字段,按照这个字段,每隔 5 秒统计一次这期间的数据增量,如果没有新增,则为 0,这种 SQL 怎么写呢?
有个表有创建时间字段,按照这个字段,每隔 5 秒统计一次这期间的数据增量,如果没有新增,则为 0,这种 SQL 怎么写呢?
|
mydSep 22, 2021
1
select count(*) from xxx group by floor(时间戳 /5)
|
|
2
@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 不是每秒钟都有数据,有没有办法能整齐的每五秒分割一次来进行统计呢? |
|
mydSep 22, 2021
3
@Geekerstar 在程序中补齐,不一定要在数据库中实现。
|
|
deltadawnSep 22, 2021
4
INTERVAL()
|
|
5
试了一下,使用 `DATE_ADD(created_at, INTERVAL - SECOND(created_at) % 5 SECOND)` 可以按照每分钟的 0,5,10.. 秒为单位统计。没有数据的时间段需要在程序补齐。
由于无法贴出代码,我把完整的 SQL 贴在了这里 pzwd.net/d/31/2 。 |
|
wellscSep 22, 2021
6
用 Prometheus 吧
|
|
adgad2Sep 22, 2021
7
遇到个类似需求,最后建表写个定时任务完事
|
|
haochen2Sep 22, 2021
8
这种统计的还是多余建个表来存储吧
|
|
9
@Pipecraft 感谢大佬
|
|
10
@myd 嗯嗯,在程序中处理了
|
|
11
@Pipecraft 大佬的网站很棒,收藏了
|
|
beginorSep 22, 2021 via Android
12
不知道 mysql 有没有类似 PostgreSQL 生成序列的概念,有的话就很容易统计了
|
|
SaxtonSep 23, 2021
13
我做过这个需求,先 count 查出来,然后用程序补充时间就可以了 mysql 只负责查 不负责逻辑的
|