Questa è una versione SQL del Report della Dashboard per Livello di Fiducia Utente.
Questo report fornisce una panoramica della distribuzione dei livelli di fiducia degli utenti all’interno di una community Discourse.
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
Dettaglio della Query
- SELECT CASE: Questa parte della query utilizza un’istruzione
CASEper assegnare un nome leggibile a ciascun livello di fiducia. Traduce il campo numericotrust_levelin stringhe come ‘newuser’, ‘basic’, ‘member’, ‘regular’ e ‘leader’ per una più facile comprensione. - COUNT(users): Questa funzione conta il numero di utenti all’interno di ciascun livello di fiducia.
- FROM users: La query estrae i dati dalla tabella
users, che contiene tutti gli account utente nella community. - WHERE id > 0: Questa condizione assicura che vengano considerati solo gli utenti reali, escludendo eventuali account di sistema che potrebbero avere un ID di 0 o inferiore.
- AND NOT EXISTS: Questa sottoquery filtra gli utenti contrassegnati come anonimi controllando la tabella
anonymous_users. Se un utente ha una voce nella tabellaanonymous_users, non viene incluso nel conteggio. - GROUP BY trust_level: Questa clausola raggruppa i risultati per livello di fiducia, assicurando che il conteggio venga eseguito separatamente per ogni livello.
- ORDER BY trust_level: Infine, i risultati vengono ordinati in base al campo
trust_level, assicurando che l’output sia ordinato dal livello più basso (newuser) al più alto (leader).
Esempio di Risultati
| case | count |
|---|---|
| newuser | 1235 |
| basic | 234 |
| member | 345 |
| regular | 56 |
| leader | 23 |