mysql或平均或者我应该使用PHP?

时间:2012-05-05 18:18:47

标签: php mysql

我试图找到一个mysql查询的平均值。

我有12个标准,我可以得到一个列的平均值,但我找不到平均值,

我试图计算出12个标准的总评分。

我认为有几种方法可以解决这个问题。

  1. 是将总分数除以票数,问题是每一行有12票的可能性。
  2. 获取平均值,找到我们设置的值数,然后将平均值除以设置的值
  3. 我需要将总数减去的数字根据投票进行更改。 1使用可以输入1排12票 2个用户可以在2行中输入总共18票,这意味着1个用户尚未完成6票table data 为了测试目的,该表已缩短为包含投票的列。我已经发布了这个,抱歉重新发布,但我开始明白我需要什么帮助

2 个答案:

答案 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)

我使用临时表做了类似的事情。首先进行每列的平均值,然后是一般平均值或您执行的任何返回所需值的操作。不要忘记放下临时表。