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

Downsample ข้อมูลลงสู่ระดับรายสัปดาห์

ฝ่ายบริหารต้องการดูว่าลูกค้าใช้บริการสปาในปี 2020 มากน้อยเพียงใด โดยต้องการผลลัพธ์รายสัปดาห์ ประกอบด้วยจำนวนนาทีรวมของการใช้บริการ จำนวนผู้เข้าร่วม และลูกค้าที่มี Customer ID สูงสุดในแต่ละสัปดาห์ เพื่อตรวจสอบว่ามีลูกค้าใหม่เข้ามาหรือไม่

เราสามารถใช้ฟังก์ชันใน SQL Server เพื่อ downsample ข้อมูลให้อยู่ในระดับที่ต้องการได้ ฟังก์ชันหนึ่งที่ใช้สำหรับงานนี้คือ DATEPART()

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

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

ดูคอร์ส

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

  • Downsample ข้อมูลการเข้าใช้บริการเดย์สปาให้อยู่ในระดับรายสัปดาห์ โดยใช้ฟังก์ชัน DATEPART()
  • หาลูกค้าที่มี Customer ID สูงสุดในแต่ละสัปดาห์
  • เติมค่าในส่วน GROUP BY ด้วยคอลัมน์ที่ไม่ได้ถูก aggregate ใน SELECT (แต่ไม่ต้องใส่ alias เช่น AS Week)

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

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

SELECT
	-- Downsample to a weekly grain
	___(___, dsv.CustomerVisitStart) AS Week,
	SUM(dsv.AmenityUseInMinutes) AS AmenityUseInMinutes,
	-- Find the customer with the largest customer ID for that week
	___(dsv.___) AS HighestCustomerID,
	COUNT(1) AS NumberOfAttendees
FROM dbo.DaySpaVisit dsv
WHERE
	dsv.CustomerVisitStart >= '2020-01-01'
	AND dsv.CustomerVisitStart < '2021-01-01'
GROUP BY
	-- When we use aggregation functions like SUM or COUNT,
    -- we need to GROUP BY the non-aggregated columns
	___(___, dsv.CustomerVisitStart)
ORDER BY
	Week;
แก้ไขและรันโค้ด