Este é um bom exemplo de algumas peculiaridades dos dados do Discourse que podem ajudá-lo a obter resultados mais precisos ao criar suas consultas.
Como a maioria das postagens e tópicos são ‘excluídos logicamente’ quando você os exclui, isso significa que eles ainda aparecerão no banco de dados e podem ser incluídos em estatísticas de relatórios personalizados, portanto, pode ajudar a filtrá-los de quaisquer resultados que você possa querer extrair para estatísticas de usuários ou categorias, por exemplo. De forma semelhante, você também pode querer excluir Mensagens Pessoais de suas estatísticas, bem como os usuários do sistema.
Aqui estão algumas dicas sobre como filtrá-los:
Esta consulta SQL é usada para obter os 10 principais usuários (excluindo usuários do sistema) que fizeram mais postagens públicas, excluindo quaisquer postagens, ou postagens de tópicos, que foram excluídas.
-- Selecionando user_id da tabela posts e contando o número de posts feitos por cada usuário
SELECT
p.user_id,
COUNT(p.id) AS "Contagem de Posts"
FROM posts p
-- Junção à esquerda com a tabela topics no topic_id
LEFT JOIN topics t ON t.id = p.topic_id
WHERE
-- Excluir tópicos de mensagens privadas
t.archetype <> 'private_message'
-- Excluir tópicos que foram excluídos
AND t.deleted_at ISNULL
-- Excluir posts que foram excluídos
AND p.deleted_at ISNULL
-- Excluir sussurros, posts de ações pequenas e posts de moderadores
AND p.post_type = 1
-- Excluir posts feitos pelo usuário do sistema e discobot (user_id 0 e -1)
AND p.user_id > 0
-- Agrupar os resultados por user_id
GROUP BY 1
-- Ordenar os resultados pela contagem de posts em ordem decrescente
ORDER BY 2 DESC
-- Limitar os resultados aos 10 principais usuários com mais posts
LIMIT 10
E aqui está sem os comentários inline:
SELECT
p.user_id,
COUNT(p.id) AS "Contagem de Posts"
FROM posts p
LEFT JOIN topics t ON t.id = p.topic_id
WHERE t.archetype <> 'private_message'
AND t.deleted_at ISNULL
AND p.deleted_at ISNULL
AND p.post_type = 1
AND p.user_id > 0
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10
Esta é apenas uma consulta simples para demonstrar os exemplos, mas espero que isso ajude você a começar com o explorador de dados.
Se você tiver alguma dúvida, por favor, pergunte abaixo. ![]()