Informe del panel - Usuarios por nivel de confianza

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 CASE para asignar un nombre legible por humanos a cada nivel de confianza. Traduce el campo numérico trust_level a 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 tabla anonymous_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
1 me gusta