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
CASEpour attribuer un nom lisible par l’homme à chaque niveau de confiance. Elle traduit le champ numériquetrust_levelen 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 tableanonymous_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 |