CommencerCommencez gratuitement

Agréger à une granularité hebdomadaire

La direction souhaite savoir dans quelle mesure les clients ont utilisé le spa en 2020. Elle veut des résultats par semaine, avec le nombre total de minutes d’utilisation des équipements, le nombre de participants, ainsi que le client ayant le plus grand ID client cette semaine-là pour voir si de nouveaux clients arrivent.

Nous pouvons utiliser des fonctions de SQL Server pour agréger à une granularité fixe comme celle-ci. Une fonction utile est DATEPART().

Cet exercice fait partie du cours

<cours>Analyse de séries temporelles dans SQL Server</cours>
Voir le cours

Instructions de l’exercice

  • Agrégez les données de visites du spa de jour à une granularité hebdomadaire à l’aide de la fonction DATEPART().
  • Trouvez, pour une semaine donnée, le client avec le plus grand ID client.
  • Complétez la clause GROUP BY avec toutes les valeurs non agrégées de la clause SELECT (mais sans alias comme AS Week).

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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;
Modifier et exécuter le code