Aan de slagGa gratis aan de slag

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

Cursus bekijken

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 de SELECT-clausule (maar zonder aliassen zoals AS 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;
Code bewerken en uitvoeren