Dies ist eine SQL-Version des Dashboard-Berichts für Benutzer nach Vertrauensstufe.
Dieser Bericht bietet einen Überblick über die Verteilung der Vertrauensstufen von Benutzern in einer Discourse-Community.
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
Aufschlüsselung der Abfrage
- SELECT CASE: Dieser Teil der Abfrage verwendet eine
CASE-Anweisung, um jeder Vertrauensstufe einen lesbaren Namen zuzuweisen. Sie übersetzt das numerische Feldtrust_levelin Zeichenfolgen wie ‚newuser‘, ‚basic‘, ‚member‘, ‚regular‘ und ‚leader‘ zur einfacheren Verständlichkeit. - COUNT(users): Diese Funktion zählt die Anzahl der Benutzer innerhalb jeder Vertrauensstufe.
- FROM users: Die Abfrage zieht Daten aus der Tabelle
users, die alle Benutzerkonten in der Community enthält. - WHERE id > 0: Diese Bedingung stellt sicher, dass nur echte Benutzer berücksichtigt werden, und schließt alle Systemkonten aus, die möglicherweise eine ID von 0 oder weniger haben.
- AND NOT EXISTS: Diese Unterabfrage filtert alle Benutzer heraus, die als anonym markiert sind, indem die Tabelle
anonymous_usersüberprüft wird. Wenn ein Benutzer einen Eintrag in der Tabelleanonymous_usershat, wird er nicht in die Zählung einbezogen. - GROUP BY trust_level: Diese Klausel gruppiert die Ergebnisse nach Vertrauensstufe und stellt sicher, dass die Zählung für jede Stufe separat erfolgt.
- ORDER BY trust_level: Schließlich werden die Ergebnisse nach dem Feld
trust_levelsortiert, um sicherzustellen, dass die Ausgabe von der niedrigsten Stufe (newuser) zur höchsten (leader) sortiert ist.
Beispielergebnisse
| case | count |
|---|---|
| newuser | 1235 |
| basic | 234 |
| member | 345 |
| regular | 56 |
| leader | 23 |