2011-08-02 51 views
0

我可以從這樣的記錄生成的表:產生平均爲2 uple與MySQL

ID|Var1|Var2|Measure 
1 10 13 10 
1 10 15 8 
1 15 13 0 
    ... 

一個ID可以有幾個VAR2那個是相同的。我如何可以爲每個2 uple ID-VAR2那樣的平均值:

ID|Var2|Mean_Measure 
1 13 5 
1 14 8 
... 
2 13 7 

謝謝

回答

1

你需要使用一個GROUP BY子句組的行具有相同IDVar2在一起,那麼AVG函數計算平均值:

SELECT t.ID, t.Var2, AVG(t.Measure) AS Mean_Measure FROM YourTable t GROUP BY t.ID, t.Var2 

我想補充一點GROUP BY將改變查詢的輸出頗有幾分。它也增加了對輸出的一些限制。第一關 - 後,其中一個應用以下的基團由只能添加SELECT子句中的表達式:

  1. 表達是GROUP BY子句
  2. 表達的一部分的聚集函數的應用

在上面的示例中,t.ID和t.Var2存在於GROUP BY子句中,AVG(t.Measure)是t.Measure上的集合函數AVG的應用程序。

WHERE條款和GROUP BY處理有也有一些要注意的事情:

  1. WHEREGROUP BY後應用,這通常意味着,表情不GROUP BY不能WHERE條款
  2. 如果您在使用希望過濾數據之前GROUP BY使用HAVING而不是WHERE

我希望這是有道理的 - 關於GROUP BY如何工作的更多更好的信息 - 我建議consulting the MySQL manual on the topic

+0

謝謝。不過,我想要每個變量2關於每個ID的方法。即:這將是一個用戶(id = 12,var2 = 31,mean_var2 = 7) – Salicorne

+0

啊 - 對不起,我認爲ID是一個主鍵。見編輯的答案 – kastermester