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

Формирование потока событий

В предыдущем упражнении мы разбили данные о посещениях спа на поток въездов и выездов. Преобразование данных методом анпивота позволяет перейти к следующему шагу — упорядочиванию всего потока.

Результаты предыдущего упражнения сохранены во временной таблице #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;
Редактировать и запускать код