ÎncepețiÎncepe gratuit

Analizează datele clienților pentru potențiale fraude

În această serie finală de exerciții, vom analiza datele unui spa de zi pentru a identifica potențiale fraude. Compania noastră acordă fiecărui client un abonament pentru uz personal și un abonament de invitat. Avem date de check-in și check-out pentru fiecare client, iar abonamentele de invitat sunt legate de ID-ul clientului de bază. Acest lucru înseamnă că pot apărea suprapuneri atunci când un client și invitatul său fac check-in împreună. Vrem să verificăm dacă există cel puțin trei intrări suprapuse pentru un singur client, deoarece aceasta ar reprezenta o încălcare a regulilor noastre de afaceri.

Cheia pentru a analiza intrările suprapuse este să depivotăm datele și să urmărim fluxul de intrări și ieșiri. Vom face asta în primul rând.

Acest exercițiu face parte din cursul

Analiza seriilor de timp în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

Separă evenimentele de intrare de cele de ieșire.

  • Completează data de început a vizitei clientului (dsv.CustomerVisitStart) ca TimeUTC în partea „intrări" a interogării.
  • Completează funcția de fereastră pe care o redenumim ca StartStopPoints, pentru a obține fluxul de check-in-uri pentru fiecare client, ordonat după data de început a vizitei.
  • Completează data de sfârșit a vizitei clientului (dsv.CustomerVisitEnd) ca TimeUTC în partea „ieșiri" a interogării.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

-- 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
Editează și rulează codul