2016-11-04 84 views
0

我想將兩個表連接在一起並接收結果如下。另外,我希望根據用戶ID接收AVG的活動價值。 我試圖這樣:如何通過ID連接數據並計算平均值,sql

SELECT Users.ID, (SELECT AVG(Activity) FROM Activity) AS AVG_Activity, Users.Date_started 
FROM Users 
INNER JOIN Activity 
ON Users.ID=Activity.ID 
ORDER BY `ID`; 

但這給我導致其中i有ID的行作爲活動表(用戶ID爲1,2,3被示出一次以上),AVG_activity行示出所有用戶活動平均價值沒有分組的ID和日期開始是好的基於用戶ID的。

用戶表:

ID Date_started 
1 2016-08-03 
2 2016-09-12 
3 2016-09-13 

活動表:

ID Activity Activity_Date 
1  0.5  2016-09-01 
2  0.5  2016-10-01 
3  0.7  2016-10-01 
1  0.1  2016-10-01 
1  0.2  2016-11-01 
2  0.5  2016-11-01 
3  0.8  2016-11-01 

結果,我想:

ID AVG_Activity Date_started 
1   0.26  2016-08-03 
2   0.5  2016-09-12 
3   0.75  2016-09-13 
+1

「ID = 1」的平均值不應該是「0.8/3」嗎? – Lamak

+0

Oups,修復它! – Martins

回答

0

你只需要使用GROUP BY

SELECT U.ID, 
     AVG(A.Activity) AVG_Activity, 
     U.Date_started 
FROM Users U 
INNER JOIN Activity A 
ON U.ID = A.ID 
GROUP BY U.ID, U.Date_started; 
+0

完美!謝謝! – Martins