【发布时间】:2012-10-01 21:53:08
【问题描述】:
我有一个带有一些评分的 SQL 查询,例如
location, cleanliness, money, kitchen, checkinprocess, servicebyowner
对于少数数据checkinprocess,servicebyowner 是0。我只想计算这些值的平均值。
我想检查我的查询,例如,如果结果有 20 行,则必须仅针对现有行计算 checkinprocess、serviceby owner 的平均值(如果仅针对 10 行结果中的 2 行)它必须仅计算 2 行的平均值,但对于其他行,它可以根据行数计算。这是我写的查询:
select count(customdata) as CNT,
customdata,
sum(service_by_owner) as ser,
sum(checkinprocess) as chk,
sum(locationrating) as loc,
sum(cleanlinessrating) as cle,
sum(valueformoneyrating) as val,
sum(kitchenequipmentrating) as kit
from feedback
group by customdata HAVING customdata !='null' AND customdata!='';
我能够计算其余四个的平均值 基于行的字段,但是对于这两个字段来说有点棘手 我。
编辑:
用于计算平均值的PHP:
foreach($result as $row){
$arrValues[] = array("customdata"=>$row['customdata'],
"checkinprocess"=>ceil(($row['chk'])),
"service_by_owner"=>(ceil($row['ser'])),
"valueformoneyrating"=>ceil(($row['val']/($row['CNT']*4))*100),
"locationrating"=>ceil(($row['loc']/($row['CNT']*4))*100),
"kitchenequipmentrating"=>ceil(($row['kit']/($row['CNT']*4))*100),
"cleanlinessrating"=>ceil(($row['cle']/($row['CNT']*4))*100));
}
这个 checkinprocess 和 servicebyowner,我必须只计算现有行的平均值,而不是所有为 0 的行。
【问题讨论】:
-
您的查询仅汇总列。没有计算平均值。您尝试过什么来解决您的问题?
-
我正在尝试在 PHP 中找到平均值
-
我已经添加了你的代码。不需要添加两次。
-
如果您不想在计算中存储 0 个评分,为什么要存储它们?没有信息的值应该预先存储为空。零值应该有意义,因此是平均值的一部分。