Понижение гранулярности до недельного уровня
Руководство хочет оценить, насколько активно клиенты пользовались спа-зоной в 2020 году. Результаты должны быть представлены по неделям: общее количество минут использования услуг, число посетителей, а также клиент с наибольшим идентификатором за каждую неделю — чтобы понять, приходят ли новые клиенты.
Для понижения гранулярности до фиксированного уровня в SQL Server можно использовать специальные функции. Одна из них — DATEPART().
Это упражнение является частью курса
Анализ временных рядов в SQL Server
Инструкции к упражнению
- Понизьте гранулярность данных о посещениях спа до недельного уровня с помощью функции
DATEPART(). - Найдите клиента с наибольшим идентификатором для каждой недели.
- Заполните раздел
GROUP BY, указав все неагрегированные значения из разделаSELECT(без псевдонимов, таких какAS Week).
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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;