Oft möchten Sie Daten für einen bestimmten Zeitraum abrufen. Sie können dies tun, indem Sie Ihren Zeitraum direkt in die Abfrage einfügen, aber um Ihren Bericht zukunftssicherer zu machen, können Sie einen Datums-Parameter hinzufügen:
Diese Abfrage dient dazu, die Gesamtzahl der Beiträge in jeder Kategorie (ausgenommen gelöschte Beiträge und Themen, private Nachrichten und Themen ohne Kategorie) zu zählen, die innerhalb eines bestimmten Datumsbereichs erstellt wurden, und dann die Kategorien nach der Gesamtzahl der Beiträge in absteigender Reihenfolge zu sortieren.
-- [params]
-- date :start_date -- Dies ist ein Parameter für das Startdatum des Bereichs
-- date :end_date -- Dies ist ein Parameter für das Enddatum des Bereichs
SELECT
t.category_id,
COUNT(p.id) AS "Total Posts" -- Zählt die Anzahl der Beiträge in jeder Kategorie
FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE p.created_at::date BETWEEN :start_date AND :end_date -- Filtert Beiträge, die zwischen dem Startdatum und dem Enddatum erstellt wurden (::date wandelt den created_at Zeitstempel in ein Datum um)
AND t.deleted_at IS NULL
AND p.deleted_at IS NULL
AND t.archetype <> 'private message'
AND p.user_id > 0
AND t.category_id IS NOT NULL
GROUP BY 1
ORDER BY 2 DESC
Die Verwendung des Parameterstils date anstelle von string macht die Eingabe des Parameterwerts viel intuitiver, insbesondere wenn er mit anderen geteilt wird.
Ein weiterer bemerkenswerter Tipp für diese Art von Abfrage ist die Umwandlung von created_at in ein Datum. Da der Wert in der Datenbank als Zeitstempel gespeichert wird, werden die Ergebnisse des Datums :end_date selbst nicht erfasst, wenn Sie ihn nicht in ein Datum umwandeln.
Sie können überprüfen, welche Werte als Zeitstempel gespeichert sind, indem Sie den Explorer-Baum verwenden:
Diese Abfrage ist hauptsächlich ein Beispiel, um die Prinzipien zu demonstrieren. Hoffentlich finden Sie sie nützlich, aber wenn Sie Fragen haben, stellen Sie diese bitte unten. ![]()
