Relatório do Painel - Usuários Por Nível de Confiança

Este é um relatório SQL do painel para Níveis de Confiança de Usuários.

Este relatório fornece uma visão geral da distribuição dos níveis de confiança dos usuários em uma comunidade Discourse.

SELECT 
    CASE
        WHEN trust_level = 0 THEN 'newuser'
        WHEN trust_level = 1 THEN 'basic'
        WHEN trust_level = 2 THEN 'member'
        WHEN trust_level = 3 THEN 'regular'
        WHEN trust_level = 4 THEN 'leader'
        ELSE 'unknow'
    END,
    COUNT(users) 
FROM users
WHERE 
    id > 0
    AND NOT EXISTS(
                     SELECT 1
                     FROM anonymous_users a
                     WHERE a.user_id = users.id
                  )
GROUP BY trust_level
ORDER BY trust_level

Detalhamento da Consulta

  • SELECT CASE: Esta parte da consulta usa uma instrução CASE para atribuir um nome legível por humanos a cada nível de confiança. Ela traduz o campo numérico trust_level em strings como ‘newuser’, ‘basic’, ‘member’, ‘regular’ e ‘leader’ para facilitar o entendimento.
  • COUNT(users): Esta função conta o número de usuários dentro de cada nível de confiança.
  • FROM users: A consulta está extraindo dados da tabela users, que contém todas as contas de usuário na comunidade.
  • WHERE id > 0: Esta condição garante que apenas usuários reais sejam considerados, excluindo quaisquer contas de sistema que possam ter um ID de 0 ou menor.
  • AND NOT EXISTS: Esta subconsulta filtra quaisquer usuários que são marcados como anônimos verificando a tabela anonymous_users. Se um usuário tiver uma entrada na tabela anonymous_users, ele não será incluído na contagem.
  • GROUP BY trust_level: Esta cláusula agrupa os resultados por nível de confiança, garantindo que a contagem seja feita separadamente para cada nível.
  • ORDER BY trust_level: Finalmente, os resultados são ordenados pelo campo trust_level, garantindo que a saída seja classificada do nível mais baixo (newuser) para o mais alto (leader).

Exemplo de Resultados

case count
newuser 1235
basic 234
member 345
regular 56
leader 23
1 curtida