PHP从mysql中提取的平均每日平均值

时间:2013-08-16 17:29:32

标签: php mysql

我计算使用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);
?>

3 个答案:

答案 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或任何其他脚本语言无关。这正是您应该总是尝试在数据库查询中解决的问题 - 您将获得更清晰的解决方案和更好的性能,而不是将所有数据传递到您的脚本,只是为了进行计算,您可以通过单个查询获得第一名。戈登·林诺夫给出的答案是正确的。