Riduci la granularità al livello giornaliero
Raggruppare i dati a una granularità superiore è un'attività analitica comune. Possiamo avere un insieme di dati con timestamp specifici e la necessità di osservare risultati aggregati. In SQL Server, sono disponibili diverse tecniche a seconda della granularità desiderata.
Per questi esercizi, considereremo una spa fittizia. La direzione della spa ha inviato coupon a potenziali nuovi clienti per il periodo dal 16 al 20 giugno 2020 e vorrebbe capire se questa campagna ha stimolato nuove visite.
In questo esercizio, vedremo una delle tecniche di downsampling più semplici: convertire un tipo di dato DATETIME2 o DATETIME in un tipo di dato con sola data e senza componente oraria: il tipo DATE.
Questo esercizio fa parte del corso
Analisi delle serie temporali in SQL Server
Istruzioni dell'esercizio
- Riduci al livello giornaliero gli orari di inizio visita dei clienti e aggrega i risultati.
- Compila la clausola GROUP BY con tutti i valori non aggregati presenti nella clausola SELECT (ma senza alias come
AS Day).
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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;