You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL多时间戳SUM()聚合查询及10秒时间窗口需求

解决方案

一、MySQL 端实现

1. 按原始时间戳直接聚合(无时间窗口)

如果仅需要对每个唯一的timestamp值求和,直接使用GROUP BY即可,SQL语句如下:

SELECT SUM(used) AS `sum(Used)`, timestamp
FROM usage
GROUP BY timestamp
ORDER BY timestamp;

执行后会输出你期望的结果,将每个时间戳对应的used值求和汇总。

2. 10秒时间窗口聚合(覆盖延迟写入)

要覆盖cronjob的延迟写入需求,可通过将时间戳映射到所属的10秒区间起始点,再分组求和。利用UNIX_TIMESTAMP转换为秒数后取整实现:

SELECT 
    SUM(used) AS `sum(Used)`,
    FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamp) / 10) * 10) AS `window_timestamp`
FROM usage
GROUP BY FLOOR(UNIX_TIMESTAMP(timestamp) / 10)
ORDER BY `window_timestamp`;
  • 原理:把时间戳转为秒数后,除以10取整再乘10,得到该时间戳所属10秒窗口的起始时间(例如2023-03-12 12:30:04会被映射到2023-03-12 12:30:00,2023-03-12 12:30:54映射到2023-03-12 12:30:50)
  • 该方式能把10秒内延迟写入的记录归到同一窗口,避免数据分散。

二、Grafana 端实现

如果数据最终用于Grafana展示,也可直接在Grafana中配置聚合,无需修改SQL:

  1. 配置并连接MySQL数据源
  2. 在面板查询编辑器中输入基础查询:SELECT used, timestamp FROM usage
  3. 在查询选项的Group by中,选择time类型,设置间隔为10s
  4. 选择聚合函数为Sum,作用于used字段
  5. 保存配置后,Grafana会自动按10秒窗口聚合数据,适配可视化需求

这种方式更灵活,可根据展示需求随时调整时间窗口大小。

内容的提问来源于stack exchange,提问作者Chris W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:22:47