Dashboard-Bericht - Themen

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_date und :end_date, die den Datumsbereich für den Bericht definieren. Beide Datumsparameter akzeptieren das Format JJJJ-MM-TT.
  • Datenauswahl: Die Abfrage wählt das Erstellungsdatum von Beiträgen (p.created_at) und die Anzahl der Beitrags-IDs (COUNT(p.id)) als topics_created aus.
  • Joins: Sie verknüpft die posts-Tabelle mit der topics-Tabelle über ihre jeweiligen id-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.
  • 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
4 „Gefällt mir“