Downsamplen naar een wekelijkse granulariteit
Het management wil zien hoe goed mensen in 2020 gebruik hebben gemaakt van de spa. Ze willen de resultaten per week zien, met het totaal aantal minuten aan voorzieningengebruik, het aantal bezoekers en de klant met de hoogste customer ID in die week om te kijken of er nieuwe klanten binnenkomen.
We kunnen functies in SQL Server gebruiken om op deze manier naar een vaste granulariteit te downsamplen. Een van die functies is DATEPART().
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in SQL Server
Oefeninstructies
- Downsample de dag-spabezoekgegevens naar een wekelijkse granulariteit met de functie
DATEPART(). - Zoek de klant met de hoogste customer ID voor een bepaalde week.
- Vul de
GROUP BY-clausule aan met alle niet-geaggregeerde waarden in deSELECT-clausule (maar zonder aliassen zoalsAS Week).
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
SELECT
-- Downsample to a weekly grain
___(___, dsv.CustomerVisitStart) AS Week,
SUM(dsv.AmenityUseInMinutes) AS AmenityUseInMinutes,
-- Find the customer with the largest customer ID for that week
___(dsv.___) AS HighestCustomerID,
COUNT(1) AS NumberOfAttendees
FROM dbo.DaySpaVisit dsv
WHERE
dsv.CustomerVisitStart >= '2020-01-01'
AND dsv.CustomerVisitStart < '2021-01-01'
GROUP BY
-- When we use aggregation functions like SUM or COUNT,
-- we need to GROUP BY the non-aggregated columns
___(___, dsv.CustomerVisitStart)
ORDER BY
Week;