Questa è una versione SQL del report della dashboard per gli utenti più ignorati/silenziosi.
Questo report della dashboard fornisce agli amministratori informazioni su quali utenti sulla piattaforma sono stati ignorati o silenziati da altri membri tra date di inizio e fine specificate. Un utente ignorato è qualcuno che è stato selettivamente escluso da un membro in modo che i suoi post non siano visibili a lui, mentre un utente silenziato è qualcuno da cui un membro ha scelto di non ricevere notifiche.
Questo report può identificare gli utenti che causano attriti all’interno di una community o il cui comportamento porta gli altri a non voler interagire con loro. Il report può aiutare a prendere decisioni di moderazione come contattare gli utenti frequentemente ignorati o silenziati per affrontare il loro comportamento, o comprendere più ampiamente se ci sono problemi nella community che richiedono attenzione.
-- [params]
-- date :start_date = 2023-01-01
-- date :end_date = 2025-01-01
WITH ignored_users AS (
SELECT
ignored_user_id AS user_id,
COUNT(*) AS ignores_count
FROM ignored_users
WHERE created_at >= :start_date
AND created_at <= :end_date
GROUP BY ignored_user_id
ORDER BY COUNT(*) DESC
),
muted_users AS (
SELECT
muted_user_id AS user_id,
COUNT(*) AS mutes_count
FROM muted_users
WHERE created_at >= :start_date
AND created_at <= :end_date
GROUP BY muted_user_id
ORDER BY COUNT(*) DESC
)
SELECT
u.id AS user_id,
u.username AS username,
ig.ignores_count AS ignores_count,
COALESCE(mu.mutes_count, 0) AS mutes_count,
ig.ignores_count + COALESCE(mu.mutes_count, 0) AS total
FROM users AS u
JOIN ignored_users AS ig ON ig.user_id = u.id
LEFT OUTER JOIN muted_users AS mu ON mu.user_id = u.id
ORDER BY total DESC
Spiegazione della query SQL
Questa query SQL funziona in diversi passaggi:
- Parametri Data:
- La query accetta due parametri,
:start_datee:end_date, che definiscono l’intervallo di date per il report. Entrambi i parametri data accettano il formato dataAAAA-MM-GG.
- La query accetta due parametri,
- Espressioni Tabellari Comuni (CTE):
- La CTE
ignored_usersselezionaignored_user_ide conta quante volte quell’ID appare nella tabellaignored_users(indicando quante volte l’utente è stato ignorato), filtrando i risultati tra:start_datee:end_date. - La CTE
muted_usersè simile ma selezionamuted_user_iddalla tabellamuted_userse conta le istanze all’interno dei filtri di data.
- La CTE
- Istruzione SELECT Principale: Seleziona i dettagli dell’utente dalla tabella
userse i conteggi dalle CTEignored_usersemuted_users.ignores_countviene preso direttamente dalla CTEignored_users.mutes_countviene preso dalla CTEmuted_users, ma se èNULL(significa che l’utente non è stato silenziato), viene sostituito con 0 utilizzando la funzioneCOALESCE.- Viene calcolato un totale sommando gli ignorati e i silenziati.
- JOIN: La query principale sfrutta un
JOINsuignored_usersper includere tutti gli utenti che sono stati ignorati almeno una volta, e unLEFT OUTER JOINsumuted_usersper includere anche gli utenti che potrebbero non essere stati silenziati. - ORDER BY: Il report è ordinato per il totale di ignorati e silenziati in ordine decrescente, mostrando gli utenti più “problematici” in cima al report.
Esempio di Risultati
| utente | username | ignores_count | mutes_count | totale |
|---|---|---|---|---|
| user1 | user1 | 4 | 1 | 5 |
| user2 | user2 | 3 | 0 | 3 |
| user3 | user3 | 1 | 2 | 3 |