次の SQL クエリがあります。
SELECT date(created_at), sum(duration) as total_duration
FROM "workouts" WHERE "workouts"."user_id" = 5 AND "workouts"."category" = 'All'
GROUP BY date(created_at) ORDER BY date(created_at) ASC
しかし、ワークアウトのIDも照会したいので、これを試しました:
SELECT id as id, date(created_at), sum(duration) as total_duration
FROM "workouts" WHERE "workouts"."user_id" = 5 AND "workouts"."category" = 'All'
GROUP BY id, date(created_at) ORDER BY date(created_at) ASC
ただし、これにより、日付句によるグループが機能しなくなります (つまり、特定の日付のすべてのワークアウトの期間を合計しません)。これは、複数のレコードを持つ日付に対して 1 つの ID を持つことができないためだと思います。返された特定のレコードに複数のワークアウトが関連付けられている場合でも、ID を返す方法はありますか?
たとえば、誰かが昨日 3 回のワークアウトを行い、それぞれが 40 分間継続した場合、クエリは 120 分 (特定の日付の継続時間の合計) を返しますが、その日のワークアウトの各 ID も返しますか?
または、クエリ自体でこれを行うのではなく、アプリケーションで行う必要がありますか?
助けてくれてありがとう。