Construiește un flux de evenimente
În exercițiul anterior, am defalcat datele despre spa pe zi într-un flux de intrări și ieșiri. Depivotarea datelor ne permite să trecem la pasul următor, și anume ordonarea întregului flux.
Rezultatele din exercițiul anterior se află acum într-un tabel temporar numit #StartStopPoints. Coloanele din acest tabel sunt CustomerID, TimeUTC, EntryCount și StartOrdinal. Acestea sunt singurele coloane pe care va trebui să le folosești în acest exercițiu. TimeUTC reprezintă momentul evenimentului, EntryCount indică variația netă pentru eveniment (+1 sau -1), iar StartOrdinal apare pentru evenimentele de intrare și indică ordinea de intrare.
Acest exercițiu face parte din cursul
Analiza seriilor de timp în SQL Server
Instrucțiuni pentru exercițiu
- Completează funcția de fereastră potrivită (
ROW_NUMBER()) pentru a crea un flux de check-in-uri și check-out-uri în ordine cronologică. - Partiționează după ID-ul clientului pentru a calcula un rezultat per utilizator.
- Ordonează după momentul evenimentului și rezolvă situațiile de egalitate folosind valoarea ordinalului de start.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;