Dies ist eine SQL-Version des Dashboard-Berichts für Benutzerprofilansichten.
Dieser Dashboard-Bericht generiert Statistiken über die Gesamtzahl der Benutzerprofilansichten pro Tag innerhalb eines bestimmten Datumsbereichs.
-- [params]
-- date :start_date = 2024-01-05
-- date :end_date = 2024-02-06
WITH profile_views_per_day AS (
SELECT
date_trunc('day', viewed_at) AS day,
COUNT(*) AS views
FROM user_profile_views
WHERE viewed_at >= :start_date AND viewed_at <= :end_date
GROUP BY day
)
SELECT
day::date,
views
FROM profile_views_per_day
ORDER BY day
Erklärung der SQL-Abfrage
Hier ist eine Aufschlüsselung, wie die Abfrage funktioniert:
- Parameter: Die Abfrage akzeptiert zwei Parameter,
:start_dateund:end_date, mit denen der Benutzer den Datumsbereich für den Bericht angeben kann. Beide Datumsparameter akzeptieren das DatumsformatJJJJ-MM-TT. - Common Table Expression (CTE): Die Abfrage beginnt mit einer CTE namens
profile_views_per_day. Dies ist ein temporärer Ergebnissatz, den wir in der Hauptabfrage verwenden werden. - Datumsabschneidung: Innerhalb der CTE wird die Funktion
date_truncverwendet, um den Zeitstempelviewed_atauf den Tag zu kürzen. Das bedeutet, dass unabhängig von der Uhrzeit, zu der ein Profil angesehen wurde, es nur nach dem Datum gezählt wird. - Zählen von Ansichten: Die Funktion
COUNT(*)zählt die Anzahl der Profilansichten für jeden Tag. - Filtern nach Datumsbereich: Die Klausel
WHEREbeschränkt die Zählung auf Ansichten, die zwischen den Parametern:start_dateund:end_dateaufgetreten sind, die am Anfang der Abfrage festgelegt sind. - Gruppieren von Ergebnissen: Die Klausel
GROUP BYgruppiert die Ergebnisse nach dem gekürzten Tag, sodass die Anzahl der Ansichten pro Tag aggregiert wird. - Auswählen von Ergebnissen: Die Hauptanweisung
SELECTruft die Ergebnisse aus der CTE ab. Sie wählt den gekürzten Tag (umgewandelt in den Datentyp Datum) und die Anzahl der Ansichten für diesen Tag aus. - Sortieren von Ergebnissen: Schließlich stellt die Klausel
ORDER BYsicher, dass die Ergebnisse chronologisch nach Tag sortiert dargestellt werden.
Beispielergebnisse
| day | views |
|---|---|
| 2024-01-05 | 263 |
| 2024-01-06 | 374 |
| 2024-01-07 | 272 |
| 2024-01-08 | 409 |
| 2024-01-09 | 606 |