我试图找到一个mysql查询的平均值。
我有12个标准,我可以得到一个列的平均值,但我找不到平均值,
我试图计算出12个标准的总评分。
我认为有几种方法可以解决这个问题。
我需要将总数减去的数字根据投票进行更改。 1使用可以输入1排12票 2个用户可以在2行中输入总共18票,这意味着1个用户尚未完成6票 为了测试目的,该表已缩短为包含投票的列。我已经发布了这个,抱歉重新发布,但我开始明白我需要什么帮助
答案 0 :(得分:0)
首先,为了确定用户是否投票,您需要在字段中存储除整数以外的内容,直到添加投票为止。我建议NULL
。
接下来,在表格中添加另一列以获取用户的平均评分。这将使用不具有null
值的行中的列进行计算。示例半伪代码:
// Get users row from database
// Use a query like:
// SELECT comfort,service,friendliness,food,drinks,toilet,music FROM myTable WHERE user_id = 123;
$row = $db->fetchrow($userid);
// Loop through and find out how many are valid
// Also add values together
foreach($row as $col)
{
if( !is_null($col) )
{
$numValidColumns++;
$totalVote = $totalVote + $col;
}
}
// Calculate user's average
$userAvg = $totalVote/$numValidColumns;
// Add to db for this row in new field you just made
$db->insert(...);
这样的事情可以让你计算出用户的平均值。如果他们再加上一次投票,你会重新计算这个平均值。
最后一步是查询所有行,并将用户平均值列的值添加到一起。将其除以总行数以得出总体平均值。
希望你走上正轨。
答案 1 :(得分:0)
我使用临时表做了类似的事情。首先进行每列的平均值,然后是一般平均值或您执行的任何返回所需值的操作。不要忘记放下临时表。