ПочатиПочніть безкоштовно

Проаналізуйте дані клієнтів на можливе шахрайство

У цьому завершальному наборі вправ ми проаналізуємо дані денного спа, щоб виявити можливе шахрайство. Наша компанія надає кожному клієнтові один персональний абонемент і один гостьовий пропуск. Ми маємо дані про чекини та чекиаути кожного клієнта, а гостьові пропуски прив'язані до базового ідентифікатора клієнта. Це означає, що може бути перетин, коли клієнт і гість реєструються одночасно. Ми хочемо перевірити, чи є принаймні три перекривні записи для одного клієнта, адже це порушує наше бізнес-правило.

Ключ до аналізу перекривних записів — «розгорнути» дані і подивитися на потік входів та виходів. Спочатку ми саме це і зробимо.

Ця вправа є частиною курсу

Аналіз часових рядів у 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
Редагувати та запускати код