Questa è una versione SQL del report di dashboard per Notify Moderators.
Questo report di dashboard fornisce un conteggio giornaliero dei messaggi privati inviati ai moderatori con un sottotipo di notifica notify_moderators. Questa informazione aiuta gli amministratori a comprendere i periodi di elevata richiesta di attenzione da parte dei moderatori e potrebbe indicare quando gli utenti stanno riscontrando problemi che richiedono l’assistenza dei moderatori.
-- [params]
-- date :start_date = 2023-12-15
-- date :end_date = 2024-01-16
SELECT
DATE(created_at) AS day,
COUNT(1) AS notifications_count
FROM topics
WHERE archetype = 'private_message'
AND subtype = 'notify_moderators'
AND created_at BETWEEN :start_date AND :end_date
AND deleted_at IS NULL
AND user_id > 0
GROUP BY DATE(created_at)
ORDER BY day
Spiegazione della query SQL
La query funziona estraendo dati dalla tabella topics, in particolare quelli che rientrano nella categoria dei messaggi privati ai moderatori all’interno di un intervallo di tempo specificato. Analizziamola nel dettaglio:
- 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,
- Selezione e Conteggio:
DATE(created_at)converte il timestampcreated_atin un formato data e lo etichetta comeday. Ciò consente di raggruppare e contare i messaggi in base al giorno in cui sono stati creati.COUNT(1)viene utilizzato per contare il numero di voci per ogni giorno, etichettando questo conteggio comenotifications_count.
- Criteri di Filtro:
- La query filtra solo le voci in cui l’
archetypeè'private_message', assicurando che stiamo esaminando esclusivamente i messaggi e non altri tipi di argomenti. - Il
subtypeè limitato a'notify_moderators', isolando i casi in cui gli utenti notificano o richiedono assistenza ai moderatori. - Verifica che il timestamp
created_atdel messaggio sia compreso tra:start_datee:end_datespecificati. - I messaggi che sono stati eliminati (
deleted_at IS NULL) sono esclusi dal conteggio per garantire che il report rifletta solo le comunicazioni attive. - Infine, assicura che i messaggi siano associati a un utente valido confermando
user_id > 0.
- La query filtra solo le voci in cui l’
- Raggruppamento e Ordinamento:
- La query utilizza
GROUP BY DATE(created_at)per aggregare i risultati per ogni giorno nell’intervallo di date specificato. - Quindi ordina i risultati cronologicamente con
ORDER BY day, rendendo il report facile da leggere e interpretare.
- La query utilizza
Risultati di esempio
| day | notifications_count |
|---|---|
| 2023-12-17 | 3 |
| 2023-12-18 | 1 |
| 2023-12-21 | 1 |
| 2023-12-23 | 2 |
| 2023-12-26 | 1 |