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
CASEpara atribuir um nome legível por humanos a cada nível de confiança. Ela traduz o campo numéricotrust_levelem 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 tabelaanonymous_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 |