Rapport Tableau de bord - Utilisateurs par type

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 data avec trois colonnes : « Type », « Count » et une colonne de classement rk pour 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 SELECT compte 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_till est dans le futur (suspended_till > current_date).
    • Les utilisateurs muselés sont ceux dont la date silenced_till est dans le futur (silenced_till > current_date).
  • Chaque instruction SELECT inclut un classement codé en dur (rk) à des fins de tri.
  • L’opérateur UNION est utilisé pour combiner les résultats des quatre instructions SELECT en un seul jeu de résultats.
  • La requête SELECT externe récupère ensuite le « Type » et le « « Count » de la table dérivée et trie les résultats par la colonne rk.

Exemple de résultats

Type Count
Admin 14
Moderator 30
Suspended 3
Silenced 2
1 « J'aime »