Dies ist eine SQL-Version des Dashboard-Berichts für Benutzer nach Typ.
Dieser Bericht liefert eine Zählung von Benutzern nach bestimmten Rollen und Status innerhalb einer Discourse-Community. Er kategorisiert Benutzer in vier verschiedene Gruppen: Administratoren, Moderatoren, Gesperrte und Stummgeschaltete Benutzer. Ziel dieses Berichts ist es, Community-Managern einen schnellen Überblick über die Verteilung der Benutzertypen und derjenigen mit eingeschränktem Zugriff aufgrund von Sperrung oder Stummschaltung zu geben.
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
Erklärung der SQL-Abfrage
- Die Abfrage erstellt eine abgeleitete Tabelle
datamit drei Spalten: „Type“, „Count“ und eine Rangspalterk, um sicherzustellen, dass die Endergebnisse logisch geordnet sind (Administratoren, Moderatoren, Gesperrte, Stummgeschaltete). - Für jede Benutzerrolle oder jeden Status (Administrator, Moderator, Gesperrt, Stummgeschaltet) zählt eine
SELECT-Anweisung die Anzahl der Benutzer, die die Kriterien erfüllen:- Administratoren werden durch
admin = trueidentifiziert. - Moderatoren werden durch
moderator = trueidentifiziert. - Gesperrte Benutzer sind diejenigen, deren
suspended_till-Datum in der Zukunft liegt (suspended_till > current_date). - Stummgeschaltete Benutzer sind diejenigen, deren
silenced_till-Datum in der Zukunft liegt (silenced_till > current_date).
- Administratoren werden durch
- Jede
SELECT-Anweisung enthält einen fest codierten Rang (rk) zur Sortierung. - Der
UNION-Operator wird verwendet, um die Ergebnisse der vierSELECT-Anweisungen zu einem einzigen Ergebnissatz zu kombinieren. - Die äußere
SELECT-Anweisung ruft dann „Type“ und „Count“ aus der abgeleiteten Tabelle ab und sortiert die Ergebnisse nach der Spalterk.
Beispielergebnisse
| Type | Count |
|---|---|
| Admin | 14 |
| Moderator | 30 |
| Suspended | 3 |
| Silenced | 2 |