Nedsampla till daglig granularitet
Att summera data till en grövre granularitet är en vanlig analytisk uppgift. Du kan ha en datamängd med specifika tidsstämplar och behöva se aggregerade resultat. I SQL Server finns flera tekniker tillgängliga beroende på vilken granularitet du vill uppnå.
I dessa övningar tittar vi på ett fiktivt dagsspa. Spa-ledningen skickade ut kuponger till potentiella nya kunder under perioden 16–20 juni 2020 och vill se om kampanjen ledde till fler besök.
I den här övningen tittar vi på en av de enklaste nedsamplingstekniker: att konvertera en datatyp av typen DATETIME2 eller DATETIME till en datatyp som bara innehåller ett datum utan tidskomponent – det vill säga typen DATE.
Den här övningen är en del av kursen
Tidsserieanalys i SQL Server
Övningsinstruktioner
- Nedsampla kundernas besöksstartider till daglig granularitet och aggregera resultaten.
- Fyll i GROUP BY-satsen med alla icke-aggregerade värden i SELECT-satsen (men utan alias som
AS Day).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;