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

ลด Grain เป็นรายวัน

การรวมข้อมูลให้อยู่ใน grain ที่ละเอียดน้อยลงเป็นงานวิเคราะห์ที่พบได้บ่อย บางครั้งเรามีข้อมูลที่บันทึก timestamp ไว้อย่างละเอียด แต่ต้องการดูผลลัพธ์ในภาพรวม SQL Server มีหลายเทคนิคให้เลือกใช้ ขึ้นอยู่กับ grain ที่ต้องการ

ในชุดแบบฝึกหัดนี้ เราจะศึกษาข้อมูลของสปาสมมติแห่งหนึ่ง ฝ่ายจัดการสปาได้ส่งคูปองให้ลูกค้าใหม่ในช่วงวันที่ 16–20 มิถุนายน 2020 และต้องการทราบว่าแคมเปญดังกล่าวช่วยดึงดูดลูกค้าให้มาใช้บริการมากขึ้นหรือไม่

ในแบบฝึกหัดนี้ เราจะใช้เทคนิคการลด grain ที่ง่ายที่สุดวิธีหนึ่ง ได้แก่ การแปลงชนิดข้อมูล DATETIME2 หรือ DATETIME ให้เป็นชนิดข้อมูลที่มีเฉพาะวันที่ โดยไม่มีส่วนของเวลา นั่นคือชนิด DATE

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

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

ดูคอร์ส

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

  • ลด grain ของเวลาเริ่มต้นการเข้าใช้บริการของลูกค้าให้เป็นรายวัน แล้วรวมผลลัพธ์
  • เติมค่าในส่วน GROUP BY ด้วยคอลัมน์ที่ไม่ได้ถูก aggregate ใน SELECT (แต่ไม่ต้องใส่ alias เช่น AS Day)

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

SELECT
	-- Downsample to a daily grain
    -- Cast CustomerVisitStart as a date
	___(dsv.CustomerVisitStart AS ___) AS Day,
	SUM(dsv.AmenityUseInMinutes) AS AmenityUseInMinutes,
	COUNT(1) AS NumberOfAttendees
FROM dbo.DaySpaVisit dsv
WHERE
	dsv.CustomerVisitStart >= '2020-06-11'
	AND dsv.CustomerVisitStart < '2020-06-23'
GROUP BY
	-- When we use aggregation functions like SUM or COUNT,
    -- we need to GROUP BY the non-aggregated columns
	___(dsv.CustomerVisitStart AS ___)
ORDER BY
	Day;
แก้ไขและรันโค้ด