Analysera kunddata för potentiellt bedrägeri
I den här sista övningsserien analyserar vi data från ett dagsspa för att leta efter potentiellt bedrägeri. Företaget ger varje kund ett personligt pass och ett gästpass. Vi har in- och utcheckningsdata för varje kund, och gästpass kopplas tillbaka till baskund-ID:t. Det innebär att det kan uppstå överlapp när en kund och en gäst checkar in samtidigt. Vi vill se om det finns minst tre överlappande poster för en enskild kund, eftersom det skulle bryta mot vår affärsregel.
Nyckel till att förstå överlappande poster är att avpivotera datan och tänka på strömmen av ankomster och avresor. Det är det vi gör först.
Den här övningen är en del av kursen
Tidsserieanalys i SQL Server
Övningsinstruktioner
Dela upp start- och sluthändelser.
- Fyll i kundens besöksstartdatum (
dsv.CustomerVisitStart) somTimeUTCi "ankomst"-delen av frågan. - Fyll i fönsterfunktionen som vi ger aliaset
StartStopPointsför att få strömmen av incheckningar per kund, sorterad efter besöksstartdatum. - Fyll i kundens besöksslutdatum (
dsv.CustomerVisitEnd) somTimeUTCi "avresa"-delen av frågan.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- 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