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_datee:end_date, che definiscono l’intervallo di date per il report. Entrambi i parametri di data accettano il formatoAAAA-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)) cometopics_created. - Join: Esegue un join tra la tabella
postse la tabellatopicssui rispettivi campiid, 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.
- Sono stati creati nell’intervallo di date specificato (
- 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 |
| … | … |