0

我正在尝试使用 mysql 查询找到平均值的平均值。

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

我正在尝试制定 12 条标准的总评级。

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

  1. 就是用总分除以票数,问题是每一行有12票的可能性。
  2. 获取平均总数,找到我们的值集,然后将平均总数除以值集

我需要将总数除以的数字根据投票而改变。1 使用 1 行可输入 12 票 2 用户可输入 2 行总共 18 票,这意味着 1 用户尚未完成 6 票表数据 为了测试目的,将表格缩短为包含投票的列。我已经发布了,抱歉重新发布,但我开始了解我大致需要什么帮助

4

2 回答 2

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(...);

像这样的东西可以让你计算用户的平均保存它。如果他们添加另一票,您将重新计算该平均值。

最后一步是查询所有行并将用户平均列的值相加。将其除以总行数以得出总体平均值。

希望这对你来说是正确的。

于 2012-05-05T18:48:41.980 回答
0

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

于 2012-05-07T14:43:27.130 回答