Привет, @tpsReports,
У меня нет достаточно мощного экземпляра 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'
В этом примере я указал время с момента создания флага равным 20 минутам (строка 6), так как именно это вы привели в своём примере.
В седьмой строке я использовал идентификатор категории 4, но вам нужно будет подставить конкретный идентификатор категории, которую вы хотите отслеживать.
Если вы хотите иметь возможность ссылаться на категорию по имени, можно добавить ещё одно соединение (JOIN) к запросу, тогда он будет выглядеть так:
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'
Затем замените слово General в строке 8 на название вашей категории. Помните, что названия категорий чувствительны к регистру.
Дайте знать, если это поможет!