我有一个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)和列(时间和电源)名称.
希望这可以帮助.