Dies ist eine SQL-Version des Dashboard-Berichts für Themen.
Dieser Bericht liefert eine tägliche Zählung neu erstellter Themen innerhalb eines bestimmten Datumsbereichs. Der Bericht enthält keine persönlichen Nachrichten, sondern nur reguläre Themen, die im Forum sichtbar sind.
--[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
SQL-Abfrageerklärung
Die SQL-Abfrage führt die folgenden Aktionen aus:
- Parameterdefinition: Sie akzeptiert zwei Parameter,
:start_dateund:end_date, die den Datumsbereich für den Bericht definieren. Beide Datumsparameter akzeptieren das FormatJJJJ-MM-TT. - Datenauswahl: Die Abfrage wählt das Erstellungsdatum von Beiträgen (
p.created_at) und die Anzahl der Beitrags-IDs (COUNT(p.id)) alstopics_createdaus. - Joins: Sie verknüpft die
posts-Tabelle mit dertopics-Tabelle über ihre jeweiligenid-Felder und stellt sicher, dass nur nicht gelöschte Themen (t.deleted_at ISNULL) berücksichtigt werden. - Filter: Die Abfrage filtert Beiträge, um nur diejenigen einzuschließen, die:
- Innerhalb des angegebenen Datumsbereichs erstellt wurden (
p.created_at::date BETWEEN :start_date AND :end_date). - Der erste Beitrag in einem Thema sind (
p.post_number = 1), was den Beginn eines neuen Themas anzeigt. - Von registrierten Benutzern erstellt wurden (
p.user_id > 0), ausgenommen Systembeiträge. - Nicht gelöscht wurden (
p.deleted_at ISNULL). - Zu Themen des Archetyps ‘regular’ gehören (
t.archetype = 'regular'), ausgenommen persönliche Nachrichten.
- Innerhalb des angegebenen Datumsbereichs erstellt wurden (
- Gruppierung: Die Ergebnisse werden nach dem Erstellungsdatum der Beiträge gruppiert (
p.created_at::date). - Sortierung: Die endgültige Ausgabe wird nach dem Erstellungsdatum in aufsteigender Reihenfolge sortiert (
ORDER BY p.created_at::date ASC), was eine chronologische Ansicht der Erstellung neuer Themen bietet.
Beispielergebnisse
| day | topics_created |
|---|---|
| 2023-11-11 | 18 |
| 2023-11-12 | 10 |
| 2023-11-13 | 21 |
| 2023-11-14 | 19 |
| 2023-11-15 | 22 |
| … | … |