Data Explorerプラグインを試していますが、SQLにあまり詳しくなく、やりたいことが可能かどうか分かりません。post_idがpost actionsに保存されているため、post_actionsテーブルを使用して、投稿ごとにこれを達成できるようです。理想的には、カテゴリ内の個々の投稿のフラグ数を手動で合計するのではなく、1つのクエリでこれを達成したいと考えています。
徹底的にテストできるような堅牢な Discourse インスタンスが手元にないため、この Data Explorer クエリがお役に立てるかと思います。(どなたか、さらに改善できる方がいらっしゃいましたら、ぜひご意見をお聞かせください!)
SELECT count(*)
FROM post_actions AS pac
JOIN posts p on p.id = pac.post_id
JOIN topics t on t.id = p.topic_id
WHERE pac.post_action_type_id in ('3','4','7','8')
AND pac.created_at >= NOW() - INTERVAL '20 MINUTE'
AND t.category_id = '4'
SELECT count(*)
FROM post_actions AS pac
JOIN posts p on p.id = pac.post_id
JOIN topics t on t.id = p.topic_id
JOIN categories c on c.id = t.category_id
WHERE pac.post_action_type_id in ('3','4','7','8')
AND pac.created_at >= NOW() - INTERVAL '20 MINUTE'
AND c.name = 'General'
その後、8行目の General を、お使いのカテゴリ名に置き換えてください。カテゴリ名は、大文字と小文字を区別することに注意してください。
--[params]
-- int_list :category_ids
-- text :interval = 20min
SELECT t.category_id, count(pa.id) count
from post_actions pa
INNER JOIN posts p on p.id = pa.post_id
INNER JOIN topics t on t.id = p.topic_id
WHERE post_action_type_id in (3, 4, 6, 7, 8)
AND t.category_id in (:category_ids)
AND pa.created_at >= now() - interval :interval
GROUP BY t.category_id