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
datacon tres columnas: “Type”, “Count” y una columna de clasificaciónrkpara 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
SELECTcuenta 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_tillque está en el futuro (suspended_till > current_date). - Los usuarios silenciados son aquellos con una fecha
silenced_tillque está en el futuro (silenced_till > current_date).
- Los administradores se identifican por
- Cada declaración
SELECTincluye un rango codificado (rk) para fines de ordenación. - El operador
UNIONse utiliza para combinar los resultados de las cuatro declaracionesSELECTen un único conjunto de resultados. - La declaración
SELECTexterna recupera el “Type” y el “Count” de la tabla derivada y ordena los resultados por la columnark.
Resultados de ejemplo
| Type | Count |
|---|---|
| Admin | 14 |
| Moderator | 30 |
| Suspended | 3 |
| Silenced | 2 |