Sestavení proudu událostí
V předchozím cvičení jsme rozdělili data denního lázeňského pobytu na proud příchodů a odchodů. Unpivotování dat nám umožňuje přejít k dalšímu kroku, kterým je seřazení celého proudu událostí.
Výsledky z předchozího cvičení jsou teď uloženy v dočasné tabulce #StartStopPoints. Sloupce v této tabulce jsou CustomerID, TimeUTC, EntryCount a StartOrdinal. Pouze tyto sloupce budeš v tomto cvičení potřebovat. TimeUTC představuje čas události, EntryCount udává čistou změnu pro danou událost (+1 nebo -1) a StartOrdinal se objevuje u událostí příchodu a určuje pořadí vstupu.
Toto cvičení je součástí kurzu
Time Series Analysis in SQL Server
Pokyny k cvičení
- Doplň odpovídající okenní funkci (
ROW_NUMBER()), která vytvoří proud příchodů a odchodů v chronologickém pořadí. - Proveď rozdělení (partition) podle ID zákazníka, aby se výsledek počítal samostatně pro každého uživatele.
- Seřaď záznamy podle času události a případné shody rozhoduj pomocí hodnoty pořadí příchodu (start ordinal).
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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;