НачатьНачать бесплатно

Понижение частоты дискретизации с помощью таблицы-календаря

Руководству понравился еженедельный отчёт, однако оно хотело видеть все недели 2020 года, а не только те, в которые фиксировалось использование услуг. Решить эту задачу поможет таблица-календарь: она содержит все недели, поэтому можно объединить её с таблицей dbo.DaySpaVisit и получить нужные данные.

Кроме того, руководство хотело бы видеть первый день каждой календарной недели — это даёт важный контекст для тех, кто читает отчёт.

Это упражнение является частью курса

Анализ временных рядов в SQL Server

Посмотреть курс

Инструкции к упражнению

  • Найдите и включите в результат номер недели календарного года.
  • Включите минимальное значение c.Date в каждой группе под именем FirstDateOfWeek. Это работает, поскольку группировка выполняется по неделям.
  • Соедините таблицу Calendar с таблицей DaySpaVisit по дате из таблицы-календаря и дате посещения каждого клиента. CustomerVisitStart имеет тип DATETIME2 и включает время, поэтому прямое соединение охватит только посещения, начавшиеся ровно в полночь.
  • Сгруппируйте данные по номеру недели календарного года.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

SELECT
	-- Determine the week of the calendar year
	c.___,
	-- Determine the earliest DATE in this group
    -- This is NOT the DayOfWeek column
	MIN(c.___) AS FirstDateOfWeek,
	ISNULL(SUM(dsv.AmenityUseInMinutes), 0) AS AmenityUseInMinutes,
	ISNULL(MAX(dsv.CustomerID), 0) AS HighestCustomerID,
	COUNT(dsv.CustomerID) AS NumberOfAttendees
FROM dbo.Calendar c
	LEFT OUTER JOIN dbo.DaySpaVisit dsv
		-- Connect dbo.Calendar with dbo.DaySpaVisit
		-- To join on CustomerVisitStart, we need to turn 
        -- it into a DATE type
		ON c.Date = CAST(dsv.___ AS ___)
WHERE
	c.CalendarYear = 2020
GROUP BY
	-- When we use aggregation functions like SUM or COUNT,
    -- we need to GROUP BY the non-aggregated columns
	c.___
ORDER BY
	c.CalendarWeekOfYear;
Редактировать и запускать код