Dashboard Report - Argomenti

Questa è una versione SQL del Report Dashboard per Argomenti.

Questo report fornisce un conteggio dei nuovi argomenti creati su base giornaliera all’interno di un intervallo di date specificato. Il report non include messaggi personali, solo argomenti regolari visibili sul forum.

--[params]
-- date :start_date
-- date :end_date

SELECT 
     p.created_at::date as day,
    COUNT(p.id) AS topics_created
FROM posts p
INNER JOIN topics t ON t.id = p.topic_id AND t.deleted_at ISNULL
WHERE p.created_at::date BETWEEN :start_date AND :end_date
    AND p.post_number = 1
    AND p.user_id > 0 
    AND p.deleted_at ISNULL
    AND t.archetype = 'regular'
GROUP BY p.created_at::date
ORDER BY p.created_at::date ASC

Spiegazione della query SQL

La query SQL esegue le seguenti azioni:

  • Definizione dei parametri: Accetta due parametri, :start_date e :end_date, che definiscono l’intervallo di date per il report. Entrambi i parametri di data accettano il formato AAAA-MM-GG.
  • Selezione dei dati: La query seleziona la data di creazione dei post (p.created_at) e il conteggio degli ID dei post (COUNT(p.id)) come topics_created.
  • Join: Esegue un join tra la tabella posts e la tabella topics sui rispettivi campi id, assicurando che vengano considerati solo gli argomenti non eliminati (t.deleted_at ISNULL).
  • Filtri: La query filtra i post per includere solo quelli che:
    • Sono stati creati nell’intervallo di date specificato (p.created_at::date BETWEEN :start_date AND :end_date).
    • Sono il primo post in un argomento (p.post_number = 1), indicando l’inizio di un nuovo argomento.
    • Sono stati creati da utenti registrati (p.user_id > 0), escludendo i post di sistema.
    • Non sono stati eliminati (p.deleted_at ISNULL).
    • Appartengono ad argomenti dell’archetipo ‘regular’ (t.archetype = 'regular'), escludendo i messaggi personali.
  • Raggruppamento: I risultati vengono raggruppati per la data di creazione dei post (p.created_at::date).
  • Ordinamento: L’output finale viene ordinato per data di creazione in ordine crescente (ORDER BY p.created_at::date ASC), fornendo una visualizzazione cronologica della creazione di nuovi argomenti.

Risultati di esempio

day topics_created
2023-11-11 18
2023-11-12 10
2023-11-13 21
2023-11-14 19
2023-11-15 22
4 Mi Piace