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>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 BYavec toutes les valeurs non agrégées de la clauseSELECT(mais sans alias commeAS 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;