Rapporto sul Dashboard - Utenti per Tipo

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 data con tre colonne: “Type”, “Count” e una colonna di ranking rk per garantire che i risultati finali siano ordinati logicamente (Amministratori, Moderatori, Sospesi, Silenziati).
  • Per ogni ruolo o stato utente (Amministratore, Moderatore, Sospeso, Silenziato), un’istruzione SELECT conta 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_till futura (suspended_till > current_date).
    • Gli utenti silenziati sono quelli con una data silenced_till futura (silenced_till > current_date).
  • Ogni istruzione SELECT include un rank hardcoded (rk) per scopi di ordinamento.
  • L’operatore UNION viene utilizzato per combinare i risultati delle quattro istruzioni SELECT in un unico set di risultati.
  • L’istruzione SELECT esterna recupera quindi “Type” e “Count” dalla tabella derivata e ordina i risultati in base alla colonna rk.

Esempio di Risultati

Type Count
Admin 14
Moderator 30
Suspended 3
Silenced 2
1 Mi Piace