Rééchantillonner à un niveau quotidien
Agréger des données à un niveau de granularité plus élevé est une tâche analytique courante. Vous pouvez disposer d’un ensemble de données avec des horodatages précis et avoir besoin d’observer des résultats agrégés. Dans SQL Server, plusieurs techniques sont disponibles en fonction de la granularité souhaitée.
Pour ces exercices, nous étudierons un spa fictif. La direction du spa a envoyé des coupons à de potentiels nouveaux clients pour la période du 16 au 20 juin 2020 et souhaite savoir si cette campagne a suscité de nouvelles visites.
Dans cet exercice, nous allons voir l’une des techniques de réduction d’échantillonnage les plus simples : convertir un type DATETIME2 ou DATETIME en un type ne contenant que la date, sans composante horaire : le type DATE.
Cet exercice fait partie du cours
<cours>Analyse de séries temporelles dans SQL Server</cours>Instructions de l’exercice
- Rééchantillonnez les heures de début de visite des clients au niveau quotidien et agréguez les résultats.
- Complétez la clause GROUP BY avec toutes les valeurs non agrégées de la clause SELECT (mais sans les alias comme
AS Day).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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;