Dashboard-Bericht - Benutzer pro Typ

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 data mit drei Spalten: „Type“, „Count“ und eine Rangspalte rk, 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 = true identifiziert.
    • Moderatoren werden durch moderator = true identifiziert.
    • 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).
  • Jede SELECT-Anweisung enthält einen fest codierten Rang (rk) zur Sortierung.
  • Der UNION-Operator wird verwendet, um die Ergebnisse der vier SELECT-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 Spalte rk.

Beispielergebnisse

Type Count
Admin 14
Moderator 30
Suspended 3
Silenced 2
1 „Gefällt mir“