Analýza dat klientů za účelem odhalení možného podvodu
V této závěrečné sadě cvičení budeme analyzovat data denního wellness centra a hledat případné podvody. Naše společnost poskytuje každému zákazníkovi jeden průkaz pro osobní použití a jeden průkaz pro hosta. Máme záznamy o příchodech a odchodech každého klienta a průkazy pro hosty jsou provázány se základním ID zákazníka. To znamená, že může docházet k překryvu, když se klient a jeho host odbavují společně. Chceme zjistit, zda existují alespoň tři překrývající se záznamy pro jediného klienta — to by totiž bylo porušením našich obchodních pravidel.
Klíčem k odhalení překrývajících se záznamů je rozbalení dat a pohled na proud příchodů a odchodů. To uděláme jako první.
Toto cvičení je součástí kurzu
Time Series Analysis in SQL Server
Pokyny k cvičení
Rozděl události na příchody a odchody.
- Do části dotazu označené jako „příchody" doplň datum a čas začátku návštěvy zákazníka (
dsv.CustomerVisitStart) jakoTimeUTC. - Doplň okenní funkci, které dáváme alias
StartStopPoints, aby nám generovala proud odbavení pro každého zákazníka seřazený podle data začátku návštěvy. - Do části dotazu označené jako „odchody" doplň datum a čas konce návštěvy zákazníka (
dsv.CustomerVisitEnd) jakoTimeUTC.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
-- 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