Report Dashboard - Notifica Utente

Questa è una versione SQL del report della dashboard per Notify User.

Questo report della dashboard fornisce un conteggio giornaliero del numero di volte in cui gli utenti sono stati notificati privatamente da un flag su uno dei loro post.

-- [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_user'
  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 si qualificano come messaggi privati agli utenti con un sottotipo di notify_user entro 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 solo i messaggi e non altri tipi di argomenti.
    • Il subtype è limitato a 'notify_user', isolando i casi in cui gli utenti sono stati notificati riguardo a post contrassegnati.
    • 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, garantisce 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 1
2023-12-18 1
2023-12-21 1
2023-12-23 1
2023-12-26 1
1 Mi Piace