› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
zhangshaohan
V2EX  ›  MySQL

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

  •  
  •   zhangshaohan · Sep 22, 2021 · 3250 views
    This topic created in 1851 days ago, the information mentioned may be changed or developed.

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

    13 replies  •  2021-09-23 09:12:59 +08:00
    myd
        1
    myd  
       Sep 22, 2021
    select count(*) from xxx group by floor(时间戳 /5)
    zhangshaohan
        2
    zhangshaohan  
    OP
       Sep 22, 2021
    @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
        3
    myd  
       Sep 22, 2021
    @Geekerstar 在程序中补齐,不一定要在数据库中实现。
    deltadawn
        4
    deltadawn  
       Sep 22, 2021
    INTERVAL()
    Pipecraft
        5
    Pipecraft  
       Sep 22, 2021   ❤️ 2
    试了一下,使用 `DATE_ADD(created_at, INTERVAL - SECOND(created_at) % 5 SECOND)` 可以按照每分钟的 0,5,10.. 秒为单位统计。没有数据的时间段需要在程序补齐。

    由于无法贴出代码,我把完整的 SQL 贴在了这里 pzwd.net/d/31/2 。
    wellsc
        6
    wellsc  
       Sep 22, 2021
    用 Prometheus 吧
    adgad2
        7
    adgad2  
       Sep 22, 2021
    遇到个类似需求,最后建表写个定时任务完事
    haochen2
        8
    haochen2  
       Sep 22, 2021
    这种统计的还是多余建个表来存储吧
    zhangshaohan
        9
    zhangshaohan  
    OP
       Sep 22, 2021
    @Pipecraft 感谢大佬
    zhangshaohan
        10
    zhangshaohan  
    OP
       Sep 22, 2021
    @myd 嗯嗯,在程序中处理了
    zhangshaohan
        11
    zhangshaohan  
    OP
       Sep 22, 2021   ❤️ 1
    @Pipecraft 大佬的网站很棒,收藏了
    beginor
        12
    beginor  
       Sep 22, 2021 via Android
    不知道 mysql 有没有类似 PostgreSQL 生成序列的概念,有的话就很容易统计了
    Saxton
        13
    Saxton  
       Sep 23, 2021
    我做过这个需求,先 count 查出来,然后用程序补充时间就可以了 mysql 只负责查 不负责逻辑的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2542 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 00:24 · PVG 08:24 · LAX 17:24 · JFK 20:24
    ♥ Do have faith in what you're doing.