Membangun aliran peristiwa
Pada latihan sebelumnya, kita memecah data day spa menjadi aliran peristiwa masuk dan keluar. Melakukan unpivot pada data memungkinkan kita melanjutkan ke langkah berikutnya, yaitu mengurutkan seluruh aliran.
Hasil dari latihan sebelumnya sekarang ada di tabel sementara bernama #StartStopPoints. Kolom-kolom dalam tabel ini adalah CustomerID, TimeUTC, EntryCount, dan StartOrdinal. Hanya kolom-kolom ini yang perlu Anda gunakan dalam latihan ini. TimeUTC merepresentasikan waktu peristiwa, EntryCount menunjukkan perubahan bersih untuk peristiwa tersebut (+1 atau -1), dan StartOrdinal muncul untuk peristiwa masuk serta memberikan urutan masuk.
Latihan ini merupakan bagian dari kursus
Analisis Deret Waktu di SQL Server
Instruksi latihan
- Lengkapi fungsi window yang sesuai (
ROW_NUMBER()) untuk membuat aliran check-in dan check-out dalam urutan kronologis. - Partisi berdasarkan ID pelanggan untuk menghitung hasil per pengguna.
- Urutkan berdasarkan waktu peristiwa dan selesaikan nilai yang sama (tie) dengan menggunakan nilai start ordinal.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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;