Rapporto Dashboard - Notifica Moderatori

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_date e :end_date, che definiscono l’intervallo di date per il report. Entrambi i parametri data accettano il formato data AAAA-MM-GG.
  • Selezione e Conteggio:
    • DATE(created_at) converte il timestamp created_at in un formato data e lo etichetta come day. 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 come notifications_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_at del messaggio sia compreso tra :start_date e :end_date specificati.
    • 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.
  • 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.

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
4 Mi Piace