Informe del panel - Usuarios por tipo

Este es un informe de panel SQL para Usuarios por Tipo.

Este informe proporciona un recuento de usuarios por roles y estados específicos dentro de una comunidad de Discourse. Clasifica a los usuarios en cuatro grupos distintos: Administradores, Moderadores, Suspendidos y Usuarios Silenciados. El propósito de este informe es dar a los gerentes de la comunidad una visión general rápida de la distribución de los tipos de usuarios y aquellos con acceso restringido debido a suspensión o silencio.

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

Explicación de la consulta SQL

  • La consulta crea una tabla derivada data con tres columnas: “Type”, “Count” y una columna de clasificación rk para garantizar que los resultados finales se ordenen lógicamente (Administradores, Moderadores, Suspendidos, Silenciados).
  • Para cada rol o estado de usuario (Administrador, Moderador, Suspendido, Silenciado), una declaración SELECT cuenta el número de usuarios que coinciden con los criterios:
    • Los administradores se identifican por admin = true.
    • Los moderadores se identifican por moderator = true.
    • Los usuarios suspendidos son aquellos con una fecha suspended_till que está en el futuro (suspended_till > current_date).
    • Los usuarios silenciados son aquellos con una fecha silenced_till que está en el futuro (silenced_till > current_date).
  • Cada declaración SELECT incluye un rango codificado (rk) para fines de ordenación.
  • El operador UNION se utiliza para combinar los resultados de las cuatro declaraciones SELECT en un único conjunto de resultados.
  • La declaración SELECT externa recupera el “Type” y el “Count” de la tabla derivada y ordena los resultados por la columna rk.

Resultados de ejemplo

Type Count
Admin 14
Moderator 30
Suspended 3
Silenced 2
1 me gusta