mysql – 用于获取设置的时间段的平均值的SQL查询

我有一个MySQL数据库,用于存储功率读数,每分钟添加一次读数. (即每天1,440个读数).

time      power
----      -----
00:00:00    346
00:01:00    352
00:02:00    247

使用PHP我想从这些数据中生成一个图表,但我不希望图上有1,440个点.我可能会选择将其分成15分钟(这将给我96分).此外,我不想简单地采取每第15个值,因为这会产生误导性的结果.我想要做的是使用一个SQL查询,它在15分钟的块中返回数据并给出平均功率读数.

输出可能如下所示:

starttime   avgpower
---------   --------
00:00:00         342
00:15:00         490
00:30:00         533

是否有一个SQL函数可以为我做这个?或者我将不得不在我的PHP代码中执行此计算?

解决方法:

这是您的查询:

SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(`time`, '%H'), ':', (FLOOR(DATE_FORMAT(`time`, '%i') / 15) * 15), ':00'), '%H:%i:%s') `starttime`, AVG(`power`) `avgpower`
FROM `tablea`
GROUP BY `starttime`;

请随意根据您的架构替换表(tablea)和列(时间和电源)名称.

希望这可以帮助.

上一篇:php – 如何使用avg功能?


下一篇:MySQL:411M行的慢速平均查询