Один из участников нашего форума на Discourse спросил, есть ли в Discourse способ показать или отслеживать последовательные дни посещения или публикации на форуме. Я не вижу этой информации нигде в пользовательских данных администратора — сохраняется ли она где-либо?
Ну, да, ведь есть значки вроде «Энтузиаст», «Аффицио» и «Преданный», которые выдаются за последовательные дни посещения. Посещение = лайк поста или один ответ, если я не ошибаюсь.
Вы, вероятно, можете выполнить запрос в Data Explorer. Вот схема таблицы user_visits:
Может быть, что-то вроде этого?
WITH consecutive_visits AS (
SELECT
user_id,
visited_at,
visited_at - INTERVAL '1 day' * ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY visited_at) AS grp
FROM
user_visits
),
visit_streaks AS (
SELECT
user_id,
COUNT(*) AS streak_length
FROM
consecutive_visits
GROUP BY
user_id, grp
)
SELECT
user_id,
MAX(streak_length) AS longest_streak
FROM
visit_streaks
GROUP BY
user_id
ORDER BY
longest_streak DESC
LIMIT 100
Или, возможно, вы могли бы объединить это с таблицей user_actions (посещения с лайками и постами?), которая находится здесь: