Rapport Tableau de bord - Utilisateurs par niveau de confiance

Ceci est une version SQL du rapport de tableau de bord pour les utilisateurs par niveau de confiance.

Ce rapport fournit un aperçu de la distribution des niveaux de confiance des utilisateurs au sein d’une communauté 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

Répartition de la requête

  • SELECT CASE: Cette partie de la requête utilise une instruction CASE pour attribuer un nom lisible par l’homme à chaque niveau de confiance. Elle traduit le champ numérique trust_level en chaînes de caractères telles que « newuser », « basic », « member », « regular » et « leader » pour une meilleure compréhension.
  • COUNT(users) : Cette fonction compte le nombre d’utilisateurs dans chaque niveau de confiance.
  • FROM users: La requête extrait les données de la table users, qui contient tous les comptes d’utilisateurs de la communauté.
  • WHERE id > 0: Cette condition garantit que seuls les vrais utilisateurs sont pris en compte, en excluant les comptes système qui pourraient avoir un ID de 0 ou moins.
  • AND NOT EXISTS: Cette sous-requête filtre les utilisateurs marqués comme anonymes en vérifiant la table anonymous_users. Si un utilisateur a une entrée dans la table anonymous_users, il n’est pas inclus dans le décompte.
  • GROUP BY trust_level: Cette clause regroupe les résultats par niveau de confiance, garantissant que le décompte est effectué séparément pour chaque niveau.
  • ORDER BY trust_level: Enfin, les résultats sont triés par le champ trust_level, garantissant que la sortie est triée du niveau le plus bas (newuser) au plus élevé (leader).

Exemple de résultats

case count
newuser 1235
basic 234
member 345
regular 56
leader 23
1 « J'aime »