PHP/MySQL-计算列的平均值,在文件中分为一年中的几个月

PHP/MySQL-计算列的平均值,在文件中分为一年中的几个月,php,mysql,Php,Mysql,我有一个脚本,它允许我提取ID列的总计数,并将其分解为每月的分数,然后显示到表中。现在,我想对我的“OSAT”列做同样的事情,但是需要一个平均值,而不是一个计数。我该怎么办?我是一个MySQL noob,我真的需要一些帮助,因为在MySQL中仅仅用AVG替换COUNT并不能奏效 关于此处实际内容的更多信息: 我有一张有客人点评的桌子。这些记录按 日期(表格显示从一月到十二月的月份,因此我只过滤掉年份) 酒店(列“Holidex”是餐厅所在建筑的唯一5位代码。一个酒店可以有多个门店。) 门店(餐厅

我有一个脚本,它允许我提取ID列的总计数,并将其分解为每月的分数,然后显示到表中。现在,我想对我的“OSAT”列做同样的事情,但是需要一个平均值,而不是一个计数。我该怎么办?我是一个MySQL noob,我真的需要一些帮助,因为在MySQL中仅仅用AVG替换COUNT并不能奏效

关于此处实际内容的更多信息: 我有一张有客人点评的桌子。这些记录按

日期(表格显示从一月到十二月的月份,因此我只过滤掉年份)
酒店(列“Holidex”是餐厅所在建筑的唯一5位代码。一个酒店可以有多个门店。) 门店(餐厅名称)

评论员可以在1到5的范围内对餐馆的体验打分,现在我正在尝试做一些分析。我已经设法对每个月的反馈总数进行了统计,但现在我想知道每个月在食品质量、饮料选择等方面的平均得分

到目前为止,我所拥有的: 查询:



你可以添加你的查询,这样就可以很容易地帮助你使用AVG了。看一看:按月(日期)分组also@Arjun对计数的查询是如上所示,从FB_反馈_卡片_数据中选择计数(ID)作为MCOUNT,但是,所有的月份细分都是由Stats()函数完成的。@Erick看起来很简单,但我不能像那样按月分组。当我在上面的函数中用AVG替换计数时,我收到了一个错误。你能添加你的查询吗?这样就可以很容易地帮助你使用AVG了。看一看:按月(日期)分组also@Arjun对计数的查询是如上所示,从FB_反馈_卡片_数据中选择计数(ID)作为MCOUNT,但是,所有的月份细分都是由Stats()函数完成的。@Erick看起来很简单,但我不能像那样按月分组。当我在上面的函数中用AVG替换计数时,我收到了一个错误。
    <table class="fb_feedback_results">
        <?php

        // multiple criteria selection
        $whereParts = array();
        if ($property) {
            $whereParts[] = "Holidex = '$property' ";
        } 

        if ($outlet) {
            $whereParts[] = "Outlet = '$outlet' ";
        } 

        if ($pickyear) {
            $whereParts[] = "YEAR(date) = '$pickyear' ";
        } 

        $sql = ("SELECT COUNT(ID) AS MCOUNT FROM FB_Feedback_Card_Data");

        //BUILD THE FINAL QUERY
        if (count($whereParts) > 0) {
            $sql .= " WHERE " . implode('AND ', $whereParts);
        } 
        //count($whereParts) > 0

        $result = $mysqli->query($sql) or die('<p>Query to get total data from FB_Feedback_Card_Data table failed:' . mysql_error() . '</p>');

        while ($row = mysqli_fetch_row($result)) 
        {
            $mcount = $row[0];
            $mydata = stats("ALLMYRECORDS", "ALLMYRECORDS", "$property", "$outlet", "$pickyear",$mysqli);
        ?>

        <tr>
            <th class="header">Item</th>
            <th class="header">Jan</th>
            <th class="header">Feb</th>
            <th class="header">Mar</th>
            <th class="header">Apr</th>
            <th class="header">May</th>
            <th class="header">Jun</th>
            <th class="header">Jul</th>
            <th class="header">Aug</th>
            <th class="header">Sep</th>
            <th class="header">Oct</th>
            <th class="header">Nov</th>
            <th class="header">Dec</th>
            <th class="header">YTD</th>
        </tr>
        <tr>
            <td class="result_desc">Ttl. No. of Feedback</td>
            <td class="result"><?echo $mydata['a'];?></td>
            <td class="result"><?echo $mydata['b'];?></td>
            <td class="result"><?echo $mydata['c'];?></td>
            <td class="result"><?echo $mydata['d'];?></td>
            <td class="result"><?echo $mydata['e'];?></td>
            <td class="result"><?echo $mydata['f'];?></td>
            <td class="result"><?echo $mydata['g'];?></td>
            <td class="result"><?echo $mydata['h'];?></td>
            <td class="result"><?echo $mydata['i'];?></td>
            <td class="result"><?echo $mydata['j'];?></td>
            <td class="result"><?echo $mydata['k'];?></td>
            <td class="result"><?echo $mydata['l'];?></td>
            <td class="result_ytd"><strong><?echo $mydata['total'];?></strong></td>
        </tr>
            <?php
            // end grand total stats
            } 
            ?>
    </table>
function stats($myfieldname, $myvalue, $property, $outlet, $pickyear,$mysqli)
{

//$mysqli=db_connect();

$whereParts = array();

if ($property) {
        $whereParts[] = "property = '$property' ";
} 
//$property

if ($outlet) {
        $whereParts[] = "outlet = '$outlet' ";
}
// outlet

if ($pickyear) {
        $whereParts[] = "YEAR(date) = '$pickyear' ";
} 
//$pickyear

    if ($myfieldname == "ALLMYRECORDS") {
        $sql = ("SELECT COUNT(id) AS mcount, GROUP_CONCAT(DISTINCT month(date) ORDER BY month(date)) AS month_list FROM FB_Feedback_Card_Data");
        if (count($whereParts) > 0) {
            $sql .= " WHERE " . implode(' AND ', $whereParts);
        } //count($whereParts) > 0
    } 
//$myfieldname == "ALLMYRECORDS"

    else 
{
        $sql = ("SELECT DISTINCT " . "$myfieldname" . ", COUNT(id) AS mcount, GROUP_CONCAT(DISTINCT month(date) 
        ORDER BY month(date)) AS month_list
        FROM FB_Feedback_Card_Data
        where " . "$myfieldname" . "=" . "'$myvalue'");

       if (count($whereParts) > 0) {
            $sql .= " AND " . implode(' AND ', $whereParts);
        } 
       //count($whereParts) > 0

       $sql .= " group by " . "$myfieldname" . " ORDER BY " . "$myfieldname";
    }

    $monthresult = $mysqli->query($sql) or die('<p>Query in stats to get data from FB_Feedback_Card_Data table failed:' . mysql_error() . '</p>');

    while ($row = mysqli_fetch_row($monthresult)) {
        if ($myfieldname == "ALLMYRECORDS") {
            $fieldname   = "ALLMYRECORDS";
            $totalcounts = $row[0];
            $months      = $row[1];
        } 
        //$myfieldname == "ALLMYRECORDS"

         else 
         {
            $fieldname   = $row[0];
            $totalcounts = $row[1];
            $months      = $row[2];
        }

        $countdata = explode(",", $months);
        $size      = sizeof($countdata);

        for ($m = 0; $m < 13; $m++) {
            if ($countdata[$m] == 1) {
                $y1 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 2) {
                $y2 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 3) {
                $y3 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 4) {
                $y4 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 5) {
                $y5 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 6) {
                $y6 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 7) {
                $y7 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 8) {
                $y8 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 9) {
                $y9 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 10) {
                $y10 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } //$countdata[$m] == 10

            if ($countdata[$m] == 11) {
                $y11 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            if ($countdata[$m] == 12) {
                $y12 = countrecords("$myfieldname", $fieldname, $countdata[$m], "$property", "$outlet", "$pickyear",$mysqli);
            } 

            // end for
        } 
        //$m = 0; $m < 13; $m++

        // end while
    } 
    //$row = mysqli_fetch_row($monthresult)

    $out['a']     = "$y1";
    $out['b']     = "$y2";
    $out['c']     = "$y3";
    $out['d']     = "$y4";
    $out['e']     = "$y5";
    $out['f']     = "$y6";
    $out['g']     = "$y7";
    $out['h']     = "$y8";
    $out['i']     = "$y9";
    $out['j']     = "$y10";
    $out['k']     = "$y11";
    $out['l']     = "$y12";
    $out['total'] = $totalcounts;

    return $out;
//end function
}