gpt4 book ai didi

php - 具有多个值的查询上的 MySQL SUM

转载 作者:行者123 更新时间:2023-11-29 03:52:55 24 4
gpt4 key购买 nike

我有以下查询:

$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 语句,则将所有选定的行聚合为一个组。

参见文档: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

此外,当您使用聚合并选择未包含在 GROUP 语句中的字段(此处:时间)时,您必须确保您确实获得了您想要的值。

您为每个设备获得的聚合行的值是使用许多行计算的,这些行在这些字段中可能具有单独的值。当您不使用聚合函数(MINMAXAVG、..)来确定要聚合行的多个值中的哪一个时应该包含,您将收到一个或多或少由 MySQL 随机选择的值。

你应该

  • 如无必要,请勿选择此类字段。 (例如时间)
  • 对 GROUP BY 中未包含的每个字段使用适当的聚合函数(MINMAXAVG、..)条款以确保您获得正确的值(value)。 (这里我使用 MINMAX 插入了测量时间跨度的开始和结束时间)
  • 或将其包含在GROUP BY 子句中(我在示例中为“单位”这样做,因为在兆瓦和千瓦上使用 SUM 时得到错误的结果。我假设这就是您使用“单位”的目的?)<

再说一次:否则这些字段中的结果值是随机的而不是确定性的。

关于php - 具有多个值的查询上的 MySQL SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8801322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com