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