เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

วิเคราะห์ข้อมูลลูกค้าเพื่อตรวจหาการทุจริต

ในชุดแบบฝึกหัดสุดท้ายนี้ เราจะวิเคราะห์ข้อมูลสปาเพื่อตรวจหาการทุจริตที่อาจเกิดขึ้น บริษัทมอบบัตรผ่านให้ลูกค้าแต่ละรายสำหรับใช้เป็นการส่วนตัว 1 ใบ และบัตรสำหรับแขกอีก 1 ใบ โดยมีข้อมูลการเช็คอินและเช็คเอาต์ของลูกค้าแต่ละราย และบัตรแขกจะผูกกับรหัสลูกค้าหลัก ซึ่งหมายความว่าอาจเกิดการซ้อนทับได้เมื่อลูกค้าและแขกเช็คอินพร้อมกัน เราต้องการตรวจสอบว่ามีรายการที่ซ้อนทับกันอย่างน้อย 3 รายการสำหรับลูกค้าคนเดียวกันหรือไม่ เนื่องจากนั่นจะถือว่าละเมิดกฎของธุรกิจ

แนวคิดสำคัญในการวิเคราะห์รายการที่ซ้อนทับกัน คือการ unpivot ข้อมูลแล้วมองในรูปแบบของสตรีมการเข้าและออก ซึ่งเราจะเริ่มทำในขั้นตอนแรกนี้

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์อนุกรมเวลาใน SQL Server

ดูคอร์ส

คำแนะนำการฝึกหัด

แยกเหตุการณ์การเริ่มต้นและเหตุการณ์การสิ้นสุดออกจากกัน

  • ใส่วันที่เริ่มต้นการเยี่ยมชมของลูกค้า (dsv.CustomerVisitStart) เป็น TimeUTC ในส่วน "entrances" ของคิวรี
  • ใส่ window function ที่ตั้งนามแฝงว่า 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
แก้ไขและรันโค้ด