Даунсемплінг до щоденного рівня деталізації
Агрегування даних до вищого рівня деталізації — поширене аналітичне завдання. У нас може бути набір даних із точними часовими мітками, але нам потрібно подивитися на агреговані підсумки. У SQL Server є кілька технік залежно від потрібного рівня деталізації.
У цих вправах ми розглянемо вигадане денне спа. Керівництво спа розіслало купони потенційним новим клієнтам на період із 16 по 20 червня 2020 року й хоче побачити, чи ця кампанія спричинила нові відвідування.
У цій вправі ми розглянемо одну з найпростіших технік даунсемплінгу: перетворення типу даних DATETIME2 або DATETIME на тип даних лише з датою без часового компонента — тип DATE.
Ця вправа є частиною курсу
Аналіз часових рядів у SQL Server
Інструкції до вправи
- Виконайте даунсемплінг часу початку відвідувань клієнтів до щоденного рівня деталізації та агрегуйте результати.
- Заповніть клаузу GROUP BY усіма неагрегованими значеннями з клаузи SELECT (але без псевдонімів на кшталт
AS Day).
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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;