Проаналізуйте дані клієнтів на можливе шахрайство
У цьому завершальному наборі вправ ми проаналізуємо дані денного спа, щоб виявити можливе шахрайство. Наша компанія надає кожному клієнтові один персональний абонемент і один гостьовий пропуск. Ми маємо дані про чекини та чекиаути кожного клієнта, а гостьові пропуски прив'язані до базового ідентифікатора клієнта. Це означає, що може бути перетин, коли клієнт і гість реєструються одночасно. Ми хочемо перевірити, чи є принаймні три перекривні записи для одного клієнта, адже це порушує наше бізнес-правило.
Ключ до аналізу перекривних записів — «розгорнути» дані і подивитися на потік входів та виходів. Спочатку ми саме це і зробимо.
Ця вправа є частиною курсу
Аналіз часових рядів у SQL Server
Інструкції до вправи
Розділіть події початку та завершення візиту.
- Заповніть дату початку візиту клієнта (
dsv.CustomerVisitStart) якTimeUTCу частині запиту «entrances». - Заповніть віконну функцію з псевдонімом
StartStopPoints, щоб отримати послідовність чекинів для кожного клієнта, упорядковану за датою початку їхнього візиту. - Заповніть дату завершення візиту клієнта (
dsv.CustomerVisitEnd) якTimeUTCу частині запиту «departures».
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
-- This section focuses on entrances: CustomerVisitStart
SELECT
dsv.CustomerID,
dsv.___ AS TimeUTC,
1 AS EntryCount,
-- We want to know each customer's entrance stream
-- Get a unique, ascending row number
___() OVER (
-- Break this out by customer ID
PARTITION BY dsv.___
-- Ordered by the customer visit start date
ORDER BY dsv.___
) AS StartOrdinal
FROM dbo.DaySpaVisit dsv
UNION ALL
-- This section focuses on departures: CustomerVisitEnd
SELECT
dsv.CustomerID,
dsv.___ AS TimeUTC,
-1 AS EntryCount,
NULL AS StartOrdinal
FROM dbo.DaySpaVisit dsv