Побудуйте потік подій
У попередній вправі ми розбили дані спа-салону на потік входів і виходів. Перетворення даних з широкого у довгий формат (unpivot) дозволяє перейти до наступного кроку — упорядкувати весь потік.
Результати з попередньої вправи тепер у тимчасовій таблиці #StartStopPoints. Стовпці в цій таблиці: CustomerID, TimeUTC, EntryCount і StartOrdinal. Це єдині стовпці, які вам знадобляться у цій вправі. TimeUTC — це час події, EntryCount показує чисту зміну для події (+1 або -1), а StartOrdinal з'являється для подій входу й задає порядок входу.
Ця вправа є частиною курсу
Аналіз часових рядів у SQL Server
Інструкції до вправи
- Заповніть відповідну віконну функцію (
ROW_NUMBER()), щоб створити потік реєстрацій (check-in) і виходів (check-out) у хронологічному порядку. - Розбийте на секції за ідентифікатором клієнта, щоб обчислити результат для кожного користувача.
- Впорядкуйте за часом події та розв'яжіть однакові значення за допомогою порядкового значення входу (start ordinal).
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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;