Auf tägliche Granularität herunterstufen
Daten auf eine höhere Granularität zu verdichten, ist eine häufige Analyseaufgabe. Wir haben möglicherweise einen Datensatz mit konkreten Zeitstempeln und möchten die aggregierten Ergebnisse betrachten. In SQL Server gibt es dafür mehrere Techniken – je nachdem, welche Granularität du brauchst.
Für diese Übungen betrachten wir ein fiktives Day Spa. Das Management hat für den Zeitraum vom 16. bis 20. Juni 2020 Coupons an potenzielle neue Kundinnen und Kunden verschickt und möchte nun sehen, ob diese Kampagne zu neuen Besuchen geführt hat.
In dieser Aufgabe sehen wir uns eine der einfachsten Downsampling-Techniken an: einen DATETIME2‑ oder DATETIME‑Datentyp in einen Datentyp nur mit Datum und ohne Zeitkomponente umzuwandeln – den Typ DATE.
Diese Übung ist Teil des Kurses
Zeitreihenanalyse in SQL Server
Anleitung zur Übung
- Stufe die Startzeiten der Kundenbesuche auf die tägliche Granularität herunter und aggregiere die Ergebnisse.
- Fülle die GROUP BY-Klausel mit allen nicht aggregierten Werten aus der SELECT-Klausel (aber ohne Aliasse wie
AS Day).
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
SELECT
-- Downsample to a daily grain
-- Cast CustomerVisitStart as a date
___(dsv.CustomerVisitStart AS ___) AS Day,
SUM(dsv.AmenityUseInMinutes) AS AmenityUseInMinutes,
COUNT(1) AS NumberOfAttendees
FROM dbo.DaySpaVisit dsv
WHERE
dsv.CustomerVisitStart >= '2020-06-11'
AND dsv.CustomerVisitStart < '2020-06-23'
GROUP BY
-- When we use aggregation functions like SUM or COUNT,
-- we need to GROUP BY the non-aggregated columns
___(dsv.CustomerVisitStart AS ___)
ORDER BY
Day;