bluescope_data表按Timestamp分组计算Value每小时平均值的SQL修改
仪表盘每小时均值统计SQL调整方案
现有查询的适配问题
- 表名引用错误:当前业务数据表名为
bluescope_data,原查询中写的bluescopegasdata无匹配对象,会直接触发查询报错 - 统计逻辑缺失:原查询直接拉取全量明细行、逐行输出原始Value值,没有做维度分组聚合,无法输出小时级的平均值结果
实现逻辑说明
- 对
Timestamp字段做小时粒度的截断,作为仪表盘识别的时间轴字段time - 以截断后的小时值为分组维度,计算每组内
Value字段的算术平均值 - 沿用时间倒序排序规则,让最新时段的统计结果排在展示序列最前端
参考实现代码
以下为多数时序仪表盘适配的PostgreSQL语法,可直接替换原有查询使用:
SELECT date_trunc('hour', "Timestamp") AS "time", AVG("Value") AS value FROM bluescope_data GROUP BY date_trunc('hour', "Timestamp") ORDER BY "time" DESC
- 跨数据库适配提示:若使用MySQL环境,只需将上述代码中
date_trunc('hour', "Timestamp")替换为DATE_FORMAT("Timestamp", '%Y-%m-%d %H:00:00'),其余聚合、排序逻辑保持不变即可。
内容的提问来源于stack exchange,提问作者WorkerGuy21
相关产品推荐
相关产品推荐

