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 に答える