如何用单条SQL语句按天统计同表多字段的平均值?
按天统计多字段日平均值的SQL实现方案
当然可以用单条SQL直接从主表获取日平均值统计结果,不需要每日导出数据到新表。核心思路是按日期分组,同时对需要统计的多个字段分别计算平均值。
通用SQL模板(适配多数数据库)
SELECT DATE(timestamp) AS stat_date, AVG(temp_c) AS avg_temp_c, AVG(feelslike_c) AS avg_feelslike_c, AVG(humidity) AS avg_humidity, AVG(PM10) AS avg_PM10, AVG(gbdefraindex) AS avg_gbdefraindex FROM 你的主表名 GROUP BY DATE(timestamp) ORDER BY stat_date;
不同数据库的细节调整
- 若使用SQL Server,将
DATE(timestamp)替换为CAST(timestamp AS DATE) - 若使用Oracle,替换为
TRUNC(timestamp, 'DD')
这条语句会把同一天的所有数据归为一组,分别计算五个字段的日平均值,结果按日期排序,直接就能用来生成图表。
关于你明年想展示村里PM10数据以减少田间焚烧的需求:
- 可以基于上述统计出的
avg_PM10数据,生成折线图(展示每日PM10趋势)或柱状图(对比焚烧高发期与非高发期的数值差异) - 还可以额外统计月度/季度平均值,更清晰地展示焚烧行为对空气质量的影响,让村里的人直观看到数据变化,增强说服力。
内容的提问来源于stack exchange,提问作者Tyrone Fröberg
相关产品推荐
相关产品推荐

