Формирование потока событий
В предыдущем упражнении мы разбили данные о посещениях спа на поток въездов и выездов. Преобразование данных методом анпивота позволяет перейти к следующему шагу — упорядочиванию всего потока.
Результаты предыдущего упражнения сохранены во временной таблице #StartStopPoints. Столбцы этой таблицы: CustomerID, TimeUTC, EntryCount и StartOrdinal. В этом упражнении вам понадобятся только эти столбцы. TimeUTC обозначает время события, EntryCount — чистое изменение для события (+1 или -1), а StartOrdinal присутствует для событий въезда и указывает порядок заезда.
Это упражнение является частью курса
Анализ временных рядов в SQL Server
Инструкции к упражнению
- Укажите подходящую оконную функцию (
ROW_NUMBER()), чтобы сформировать поток заездов и выездов в хронологическом порядке. - Задайте секционирование по идентификатору клиента, чтобы вычислять результат для каждого пользователя.
- Выполните сортировку по времени события, а при совпадении значений используйте порядковый номер начала (
StartOrdinal).
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
SELECT s.*,
-- Build a stream of all check-in and check-out events
___() OVER (
-- Break this out by customer ID
PARTITION BY s.___
-- Order by event time and then the start ordinal
-- value (in case of exact time matches)
ORDER BY s.___, s.___
) AS StartOrEndOrdinal
FROM #StartStopPoints s;