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