У меня есть база данных Discourse на SQL. Мне нужно получить статистику пользователей за определённый момент времени.
Например: сколько постов написал пользователь?
Если я извлеку эти данные из таблицы user_stats, то получу общее число с момента регистрации на форуме до текущего момента, но мне нужно получить данные за конкретный период.
Есть какие-то идеи?
Вам потребуется самостоятельно сгенерировать статистику, выполнив новый запрос к базе данных. Например, чтобы получить количество постов за последние 30 дней:
SELECT count(*) from posts
WHERE user_id=1
AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'
В этой теме представлено множество примеров запросов, которые вы можете использовать в качестве отправной точки:
Счётчик, отображаемый в интерфейсе, учитывает только публичные, не удалённые сообщения. Счётчик в базе данных включает все сообщения, в том числе удалённые, личные сообщения и сообщения в закрытых категориях.
Вам нужно применить похожие фильтры. Что-то вроде этого:
SELECT count(*) FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE p.user_id=23968
AND p.deleted_at IS NULL
AND NOT COALESCE(p.hidden, 't')
AND p.post_type = 1
AND t.deleted_at IS NULL
AND COALESCE(t.visible, 't')
AND t.archetype <> 'private_message'
AND p.user_id > 0
AND p.post_number > 1