Questa è una versione SQL del Report della Dashboard per Utenti per Tipo.
Questo report fornisce un conteggio degli utenti per ruoli e stati specifici all’interno di una community Discourse. Categorizza gli utenti in quattro gruppi distinti: Amministratori, Moderatori, Utenti Sospesi e Utenti Silenziati. Lo scopo di questo report è fornire ai community manager una rapida panoramica della distribuzione dei tipi di utenti e di quelli con accesso limitato a causa di sospensione o silenziamento.
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
Spiegazione della Query SQL
- La query crea una tabella derivata
datacon tre colonne: “Type”, “Count” e una colonna di rankingrkper garantire che i risultati finali siano ordinati logicamente (Amministratori, Moderatori, Sospesi, Silenziati). - Per ogni ruolo o stato utente (Amministratore, Moderatore, Sospeso, Silenziato), un’istruzione
SELECTconta il numero di utenti che corrispondono ai criteri:- Gli amministratori sono identificati da
admin = true. - I moderatori sono identificati da
moderator = true. - Gli utenti sospesi sono quelli con una data
suspended_tillfutura (suspended_till > current_date). - Gli utenti silenziati sono quelli con una data
silenced_tillfutura (silenced_till > current_date).
- Gli amministratori sono identificati da
- Ogni istruzione
SELECTinclude un rank hardcoded (rk) per scopi di ordinamento. - L’operatore
UNIONviene utilizzato per combinare i risultati delle quattro istruzioniSELECTin un unico set di risultati. - L’istruzione
SELECTesterna recupera quindi “Type” e “Count” dalla tabella derivata e ordina i risultati in base alla colonnark.
Esempio di Risultati
| Type | Count |
|---|---|
| Admin | 14 |
| Moderator | 30 |
| Suspended | 3 |
| Silenced | 2 |