Насколько я могу судить, Discourse явно не отслеживает упоминания, но он ведёт учёт ссылок, добавляемых к темам. Упоминание группы в сообщении записывается как значение поля url в таблице topic_links в следующем формате: "/groups/<group_name>". Приведённый ниже запрос должен дать вам результат, близкий к тому, что вы ищете. Вам нужно будет указать значения для параметров start_date и end_date. Эти даты должны быть в формате yyyy-mm-dd. Например, чтобы получить данные за последний год, введите 2020-01-01 как start_date и 2020-12-31 как end_date:
--[params]
-- date :start_date
-- date :end_date
WITH group_mentions AS (
SELECT
split_part(url, '/', 3) AS group_name
FROM topic_links tl
JOIN topics t ON t.id = tl.topic_id
WHERE internal = true
AND url LIKE '/groups/%'
AND t.deleted_at IS NULL
AND t.archetype = 'regular'
AND tl.created_at::date BETWEEN :start_date AND :end_date
)
SELECT
gm.group_name,
COUNT(gm.group_name) AS mention_count
FROM group_mentions gm
JOIN groups g ON g.name = gm.group_name
WHERE g.created_at::date <= :start_date
GROUP BY gm.group_name
ORDER BY mention_count DESC
Запрос возвращает только упоминания, добавленные в обычные сообщения (хотя он включает и упоминания в приватных сообщениях типа «whisper»). Если вы хотите включить в результаты упоминания, добавленные в личные сообщения, удалите строку AND t.archetype = 'regular' из первого запроса.
Дайте знать, если этот запрос не возвращает нужные вам данные. Если до завтра на ваши другие вопросы никто не ответит, я постараюсь заняться ими.