Este es una versión SQL del Informe del Panel para Usuarios por Nivel de Confianza.
Este informe proporciona una visión general de la distribución de los niveles de confianza de los usuarios dentro de una comunidad de 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
Desglose de la Consulta
- SELECT CASE: Esta parte de la consulta utiliza una sentencia
CASEpara asignar un nombre legible por humanos a cada nivel de confianza. Traduce el campo numéricotrust_levela cadenas como ‘newuser’, ‘basic’, ‘member’, ‘regular’ y ‘leader’ para una comprensión más fácil. - COUNT(users): Esta función cuenta el número de usuarios dentro de cada nivel de confianza.
- FROM users: La consulta extrae datos de la tabla
users, que contiene todas las cuentas de usuario en la comunidad. - WHERE id > 0: Esta condición asegura que solo se consideren usuarios reales, excluyendo cualquier cuenta del sistema que pueda tener un ID de 0 o menos.
- AND NOT EXISTS: Esta subconsulta filtra a los usuarios que están marcados como anónimos al verificar la tabla
anonymous_users. Si un usuario tiene una entrada en la tablaanonymous_users, no se incluye en el recuento. - GROUP BY trust_level: Esta cláusula agrupa los resultados por nivel de confianza, asegurando que el recuento se realice por separado para cada nivel.
- ORDER BY trust_level: Finalmente, los resultados se ordenan por el campo
trust_level, asegurando que la salida esté ordenada desde el nivel más bajo (newuser) hasta el más alto (leader).
Resultados de Ejemplo
| case | count |
|---|---|
| newuser | 1235 |
| basic | 234 |
| member | 345 |
| regular | 56 |
| leader | 23 |