我计算使用mysql在表中花费的每日平均费用。在php中,我想将所有日平均值平均为每日平均值1。最后,我想为多个表格执行此操作,并绘制高图中的最终平均值。现在,我无法通过php来平均查询结果。我正在连接到我的数据库,但只是没有在代码中显示它。请参阅以下代码:
<?php
function array_average($arr){
$sum = array_sum($arr);
$num = sizeof($arr);
echo $sum/$num;
}
$sth = mysql_query("SELECT round((sum(d_power),2) as $perton FROM pheom.pheom_gb WHERE timestamp between subdate(curdate(), interval 3 month) and curdate() GROUP BY Day(timestamp) ORDER BY Timestamp");
$rows = array();
while($r = mysql_fetch_array($sth)) {
$rows['data'][] = $r['$perton'];
}
echo array_average($rows);
mysql_close($con);
?>
答案 0 :(得分:2)
为什么不在SQL中进行计算?
select avg($perton) as $perton
from (SELECT round(sum(d_power), 2) as $perton
FROM pheom.pheom_gb
WHERE timestamp between subdate(curdate(), interval 3 month) and curdate()
GROUP BY Day(timestamp)
) t;
答案 1 :(得分:0)
$perton
来自哪里?您的查询是双引号,这意味着变量正在展开,但您的数组访问是单引号,所以不是。
如果未定义$perton
,我相信您的查询将被评估为:
SELECT round((sum(d_power),2) as FROM pheom.pheom_gb WHERE timestamp between subdate(curdate(), interval 3 month) and curdate() GROUP BY Day(timestamp) ORDER BY Timestamp
这是语法错误。
此外,我认为array_sum
不适用于多维数组。我会尝试:
echo array_average( $rows['data'] );
答案 2 :(得分:0)
这与PHP或任何其他脚本语言无关。这正是您应该总是尝试在数据库查询中解决的问题 - 您将获得更清晰的解决方案和更好的性能,而不是将所有数据传递到您的脚本,只是为了进行计算,您可以通过单个查询获得第一名。戈登·林诺夫给出的答案是正确的。