Esta é uma versão SQL do Relatório de Painel para Usuários por Tipo.
Este relatório fornece uma contagem de usuários por funções e status específicos dentro de uma comunidade Discourse. Ele categoriza os usuários em quatro grupos distintos: Administradores, Moderadores, Suspensos e Silenciados. O objetivo deste relatório é dar aos gerentes da comunidade uma visão geral rápida da distribuição dos tipos de usuários e daqueles com acesso restrito devido a suspensão ou silenciamento.
SELECT "Type", "Count" FROM (
SELECT 'Admin' AS "Type", COUNT(id) AS "Count", 1 rk FROM users WHERE admin = true AND id > 0
UNION SELECT 'Moderator', COUNT(id), 2 FROM users WHERE moderator = true AND id > 0
UNION SELECT 'Suspended', COUNT(id), 3 FROM users WHERE suspended_till > current_date
UNION SELECT 'Silenced', COUNT(id), 4 FROM users WHERE silenced_till > current_date) AS data
ORDER BY rk
Explicação da Consulta SQL
- A consulta cria uma tabela derivada
datacom três colunas: “Type”, “Count” e uma coluna de classificaçãorkpara garantir que os resultados finais sejam ordenados logicamente (Administradores, Moderadores, Suspensos, Silenciados). - Para cada função ou status de usuário (Administrador, Moderador, Suspenso, Silenciado), uma instrução
SELECTconta o número de usuários que correspondem aos critérios:- Administradores são identificados por
admin = true. - Moderadores são identificados por
moderator = true. - Usuários suspensos são aqueles com uma data
suspended_tillque está no futuro (suspended_till > current_date). - Usuários silenciados são aqueles com uma data
silenced_tillque está no futuro (silenced_till > current_date).
- Administradores são identificados por
- Cada instrução
SELECTinclui uma classificação fixa (rk) para fins de ordenação. - O operador
UNIONé usado para combinar os resultados das quatro instruçõesSELECTem um único conjunto de resultados. - A instrução
SELECTexterna recupera então o “Type” e o “Count” da tabela derivada e ordena os resultados pela colunark.
Exemplo de Resultados
| Type | Count |
|---|---|
| Admin | 14 |
| Moderator | 30 |
| Suspended | 3 |
| Silenced | 2 |