lmp*_*ce1 1 php mysql sql sum fusioncharts
我有以下查询:
$strQuery = "SELECT siteid, SUM(watts) AS wattage, unit, device, time FROM inverter WHERE siteid = '528' AND time Between '$time1' AND '$time2' Order By device Asc";
我在融合图表中制作图表并且需要每个设备的总瓦数,但是当我执行上面的查询时,它会获取所有值并将它们放置在第一个设备上.我有40个设备,需要每个设备产生总瓦数.
在图表上,我将设备显示为x轴名称标签,将瓦数显示为值.
谢谢
SUM()是一个聚合函数,应与GROUP语句一起使用.如果GROUP省略statement,则将所有选定的行聚合为一个组.
请参阅docs:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
查看GROUP BY声明:
SELECT siteid, device,
SUM(watts) AS wattage,
MIN(time) as start_time,
MAX(time) as end_time
unit
FROM inverter
WHERE siteid = '528'
AND time BETWEEN '$time1' AND '$time2'
GROUP BY device, unit
ORDER BY device ASC
Run Code Online (Sandbox Code Playgroud)
此外,当您使用聚合并选择GROUP语句中未包含的字段(此处为:time)时,您必须确保获得所需的值.
您为每个设备获得的聚合行的值是使用许多行计算的,这些行可能包含这些字段中的单个值.当你不使用聚合函数(MIN,MAX,AVG,...),以确定哪些多个值的汇总的行应该包含,您会收到或多或少的由MySQL随机选择选择的值.
你也应该
MIN,MAX,AVG对未包含在GROUP BY子句中的每个字段,..),以确保您得到正确的值.(这里我使用MIN和插入了测量时间跨度的开始和结束时间MAX)GROUP BY子句中(我在示例中为"单位"做了这样的操作,因为当你使用SUM兆瓦和千瓦时得到错误的结果..我认为这是你使用"单位"的?)再次:否则,此类字段中的结果值是随机的,而不是确定性的.