Consulta do explorador de dados para todos os usuários ativos (Lurkadores + Postadores)

Isso deve retornar todos os usuários que leram algum conteúdo enquanto estavam logados ou publicaram algo no último ano. O explorador de dados também exibirá a quantidade total.

SELECT p.user_id
FROM posts p
LEFT JOIN topics t ON t.id = p.topic_id
WHERE p.created_at::date > CURRENT_TIMESTAMP - INTERVAL '365 days'
 AND t.deleted_at IS NULL
 AND t.visible = TRUE
 AND t.closed = FALSE
 AND t.archived = FALSE
 AND t.archetype = 'regular'
 AND p.deleted_at IS NULL
UNION
SELECT u.user_id
FROM user_visits u
WHERE u.posts_read > 0
 AND u.visited_at > CURRENT_TIMESTAMP - INTERVAL '365 days'
ORDER BY user_id

Provavelmente existe uma maneira mais eficiente de fazer isso, mas funciona :slight_smile:. Se você quiser um período específico, pode alterar > CURRENT_TIMESTAMP - INTERVAL '365 days' (ambas as ocorrências) para algo como: BETWEEN '20200101'::date AND '20210101'::date.

Você forneceu ótimas informações e referências na sua pergunta! Só precisei selecionar o que era relevante e combiná-las.