Reducerea granularității la nivel zilnic
Agregarea datelor la o granularitate mai mare este o sarcină analitică frecventă. Uneori avem un set de date cu marcaje temporale precise și avem nevoie să vizualizăm rezultatele agregate. În SQL Server, există mai multe tehnici disponibile, în funcție de granularitatea dorită.
În aceste exerciții, vom analiza un spa fictiv. Managementul spa-ului a trimis cupoane potențialilor clienți noi în perioada 16–20 iunie 2020 și ar dori să vadă dacă această campanie a generat vizite noi.
În acest exercițiu, vom examina una dintre cele mai simple tehnici de reducere a granularității: conversia unui tip de date DATETIME2 sau DATETIME într-un tip de date care conține doar data, fără componentă de timp – tipul DATE.
Acest exercițiu face parte din cursul
Analiza seriilor de timp în SQL Server
Instrucțiuni pentru exercițiu
- Reduce granularitatea orelor de început ale vizitelor clienților la nivel zilnic și agregează rezultatele.
- Completează clauza GROUP BY cu toate valorile neagregate din clauza SELECT (fără aliasuri de tipul
AS Day).
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;