2016-11-04 9 views
0

2つのテーブルを結合して、以下のように結果を受け取っています。私はユーザーIDに基づいて活動のAVG値を受け取りたいと思う。 私はこの試みていた:私は、アクティビティテーブルのようにID列を持っている場合に生じるIDでデータをまとめて平均値を計算する方法

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`; 

をしかし、これは私を与える(ID 1を持つユーザ、2,3回以上示されている)、AVG_activity行は、すべてのユーザ活動の平均を示していますIDにグループ化されていない値と開始日は、ユーザーIDに基づいてOKです。

ユーザーテーブル:

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

関連する問題