Dies ist eine SQL-Version des Dashboard-Berichts für Beiträge.
Dieser Bericht liefert eine tägliche Zählung der Beiträge, die innerhalb eines bestimmten Datumsbereichs erstellt wurden. Er wurde entwickelt, um die Aktivität in regulären Themen zu verfolgen, ausgenommen Beiträge aus privaten Nachrichten und anderen speziellen Archetypen.
--[params]
-- date :start_date
-- date :end_date
SELECT
p.created_at::date AS "Tag",
COUNT(p.id) AS "Anzahl"
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.deleted_at ISNULL
AND t.archetype = 'regular'
AND p.post_type = 1
GROUP BY p.created_at::date
ORDER BY 1
Erklärung der SQL-Abfrage
- Parameter:
- Die Abfrage akzeptiert zwei Parameter,
:start_dateund:end_date, die den Datumsbereich für den Bericht definieren. Beide Datumsparameter akzeptieren das DatumsformatJJJJ-MM-TT.
- Die Abfrage akzeptiert zwei Parameter,
Die SQL-Abfrage führt die folgenden Operationen aus:
- Datenauswahl:
- Sie wählt das Datum (
created_at::date) aus, an dem jeder Beitrag erstellt wurde, und wandelt es in ein Datumsformat um, um die Zeitkomponente zu ignorieren. - Sie zählt auch die Anzahl der Beiträge (
COUNT(p.id)), die an jedem Datum erstellt wurden.
- Sie wählt das Datum (
- Joins:
- Die Abfrage verbindet die
posts-Tabelle mit dertopics-Tabelle über einenINNER JOIN. Dieser Join stellt sicher, dass nur Beiträge berücksichtigt werden, die mit vorhandenen Themen verknüpft sind. - Sie filtert alle gelöschten Themen heraus (
t.deleted_at ISNULL).
- Die Abfrage verbindet die
- Filter:
- Sie filtert Beiträge, um nur diejenigen innerhalb des angegebenen Datumsbereichs einzuschließen (
p.created_at::date BETWEEN :start_date AND :end_date). - Sie schließt gelöschte Beiträge aus (
p.deleted_at ISNULL). - Sie beschränkt die Ergebnisse auf Beiträge aus regulären Themen (
t.archetype = 'regular'). - Sie berücksichtigt nur Beiträge vom Typ
p.post_type = 1und schließt Moderatoraktionen, Whispers und Small-Action-Beiträge aus.
- Sie filtert Beiträge, um nur diejenigen innerhalb des angegebenen Datumsbereichs einzuschließen (
- Gruppierung und Sortierung:
- Die Ergebnisse werden nach dem Datum der Beitragerstellung gruppiert (
GROUP BY p.created_at::date). - Die endgültige Ausgabe wird nach dem Datum in aufsteigender Reihenfolge sortiert (
ORDER BY 1), wobei sich1auf die erste Spalte in derSELECT-Anweisung bezieht, nämlich das Datum.
- Die Ergebnisse werden nach dem Datum der Beitragerstellung gruppiert (
Beispielergebnisse
| Tag | Anzahl |
|---|---|
| 2023-11-12 | 25 |
| 2023-11-13 | 35 |
| 2023-11-14 | 38 |
| 2023-11-15 | 47 |
| 2023-11-16 | 36 |
| 2023-11-17 | 79 |
| … | … |