簡體   English   中英

mysql或avg還是我應該使用php?

[英]mysql or avg or should i use php?

我正在嘗試通過mysql查詢找到平均值的平均值。

我有12條條件,我可以得到某列的平均值,但是我找不到平均值,

我正在嘗試得出12條標准的總評分。

我認為有幾種方法可以解決此問題。

  1. 是將總分除以投票數,問題是每行都有12票的可能性。
  2. 獲取平均總數,找到我們的#值集,然后將平均總數除以#值集

我需要根據總數除以總數的數字。 1個用戶可以在1行中輸入12票2個用戶可以在2行中總共輸入18票,這意味着1個用戶尚未完成6票 表數據 出於測試目的,該表已縮短為包含投票的列。 我已經發布了此信息,很抱歉重新發布,但是開始了解我大致需要什么幫助

首先,為了確定用戶是否已投票,您需要在字段中存儲除整數以外的其他內容,直到添加投票為止。 我建議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(...);

這樣的事情將使您能夠計算出用戶的平均保存量。 如果他們再投票,您將重新計算該平均值。

最后一步是查詢所有行,並將用戶平均值列的值相加。 將其除以總行數即可得出總體平均值。

希望這對您來說是正確的。

我使用臨時表做了類似的事情。 首先對每列進行平均值計算,然后對總平均值進行計算或執行任何操作(返回所需值)。 但是不要忘記刪除臨時表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM