私は彼の活動の最後の7日以内にユーザーのavgを見つけるしようとしているが、代わりに私のクエリは、これが結果です私のクエリで平均の複数の結果が表示されるのはなぜですか?
SELECT temp_user_batches.user_id AS
user_id,
temp_user_batches.activity_goal AS goal,
user_activities.activity_date AS dates
,
Date_sub(Curdate(
), INTERVAL 7 day) AS
min_activity_date,
Curdate() AS
max_activity_date,
(Sum(user_activities.time_spent)/60) AS
total_time_spent
FROM temp_user_batches
INNER JOIN user_activities
ON temp_user_batches.user_id =
user_activities.user_id
WHERE activity_date BETWEEN Date_sub(Now(),
INTERVAL 7 day)
AND
Curdate()
GROUP BY user_id,
goal,
dates,
max_activity_date,
min_activity_date;
をすべてのユーザーの複数の出現箇所を示しているユーザーのための1つの平均結果を示しています。
9122 10 2016-07-02 2016-06-30 2016-07-07 0.0000
9122 10 2016-07-05 2016-06-30 2016-07-07 0.0000
9122 10 2016-07-06 2016-06-30 2016-07-07 0.0000
9127 3 2016-07-01 2016-06-30 2016-07-07 0.4500
9127 3 2016-07-03 2016-06-30 2016-07-07 0.0000
9131 3 2016-07-01 2016-06-30 2016-07-07 135.3000
9131 3 2016-07-03 2016-06-30 2016-07-07 340.4500
9131 3 2016-07-04 2016-06-30 2016-07-07 0.0000
9134 3 2016-07-03 2016-06-30 2016-07-07 0.0000
9135 3 2016-07-03 2016-06-30 2016-07-07 9.1667
9136 3 2016-07-03 2016-06-30 2016-07-07 4.4000
9137 3 2016-07-03 2016-06-30 2016-07-07 0.0000
私のユーザーのアクティビティテーブルには、ユーザー9122
1 9122 10 0 2016-07-02
2 9122 10 0 2016-07-05
3 9122 10 0 2016-07-06
の3つのエントリので、このクエリはavgをするが、そのべきではありませんがあります。
あなたは '日付、max_activity_date、' GROUP BY'でmin_activity_date'を持つことを意味しなかった、それは、その場合の期待される成果を確認するのに役立ちます。 – Bulat
なぜNOW()* AND * CURDATE()??確かにそれは1つです* OR *他の – Strawberry
私は何をグループ化すべきですか? GROUP BY句内の列に機能的に依存しない非集約列 'realifex_development.user_activities.activity_date'がSELECTリストの式#3にありません。これはsql_mode = only_full_group_byと互換性がありません – Prem