Ceci est une version SQL du rapport de tableau de bord pour les utilisateurs par type.
Ce rapport fournit un décompte des utilisateurs par rôles et statuts spécifiques au sein d’une communauté Discourse. Il classe les utilisateurs en quatre groupes distincts : Administrateurs, Modérateurs, Suspendus et Muselés. Le but de ce rapport est de donner aux gestionnaires de communauté un aperçu rapide de la distribution des types d’utilisateurs et de ceux qui ont un accès restreint en raison d’une suspension ou d’un bannissement.
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
Explication de la requête SQL
- La requête crée une table dérivée
dataavec trois colonnes : « Type », « Count » et une colonne de classementrkpour garantir que les résultats finaux sont classés logiquement (Administrateurs, Modérateurs, Suspendus, Muselés). - Pour chaque rôle ou statut d’utilisateur (Administrateur, Modérateur, Suspendu, Muselé), une instruction
SELECTcompte le nombre d’utilisateurs qui correspondent aux critères :- Les administrateurs sont identifiés par
admin = true. - Les modérateurs sont identifiés par
moderator = true. - Les utilisateurs suspendus sont ceux dont la date
suspended_tillest dans le futur (suspended_till > current_date). - Les utilisateurs muselés sont ceux dont la date
silenced_tillest dans le futur (silenced_till > current_date).
- Les administrateurs sont identifiés par
- Chaque instruction
SELECTinclut un classement codé en dur (rk) à des fins de tri. - L’opérateur
UNIONest utilisé pour combiner les résultats des quatre instructionsSELECTen un seul jeu de résultats. - La requête
SELECTexterne récupère ensuite le « Type » et le « « Count » de la table dérivée et trie les résultats par la colonnerk.
Exemple de résultats
| Type | Count |
|---|---|
| Admin | 14 |
| Moderator | 30 |
| Suspended | 3 |
| Silenced | 2 |