これを試して。カテゴリの名前でgroupbyを使用します。作成したat句を指定どおりにコメントアウトしました。使用する場合は、コメントを解除できます。
SELECT c.name, SUM(ABS(v.item_id))
FROM categories c,items i, votes v
WHERE c.name = i.name
AND i.item_id=v.item_id
--AND v.created_at > #{1.week.ago}
GROUP BY c.name
ORDER BY SUM(ABS(v.item_id)) DESC LIMIT 5;
JOINキーワードを使用せず、代わりにWHERE句のみを使用してクエリの結果をフィルタリングしたことに気付くでしょう。これは理解しやすいかもしれません。 JOINについて詳しく知りたい場合は、チュートリアルをご覧ください 。
ここにも、SQLエイリアスに関するチュートリアルがあります (AS句)。実際、このサイトには、プラットフォームに依存しないさまざまなSQLトピックに関するチュートリアルがたくさんあります。
編集: コメントに従って修正され、abs関数が追加されました。