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

สร้างสรุปผลด้วย ROLLUP

ตัวดำเนินการ ROLLUP ให้ผลดีที่สุดเมื่อแอตทริบิวต์ที่ไม่ใช่ค่าวัดมีลักษณะเป็นลำดับชั้น ไม่เช่นนั้นอาจได้ระดับการรวมค่าที่ผิดปกติและไม่สมเหตุสมผล

ในสถานการณ์นี้ เราต้องการรวมจำนวนเหตุการณ์ด้านความปลอดภัยทั้งหมดในตาราง IncidentRollup ฝ่ายบริหารต้องการดูข้อมูลที่รวมตามปีปฏิทิน ไตรมาส และเดือน นอกจากนี้ยังต้องการดูผลรวมแยกตามปีปฏิทินรวมกับไตรมาส และผลรวมแยกตามแต่ละปีปฏิทิน รวมถึงยอดรวมทั้งหมด ทั้งหมดนี้สามารถทำได้ในการดำเนินการเดียว

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

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

ดูคอร์ส

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

  • กำหนดค่า NumberOfIncidents โดยรวมจำนวนเหตุการณ์ในแต่ละช่วง
  • กำหนดส่วน GROUP BY พร้อมระบุตัวดำเนินการ WITH ROLLUP

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

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

SELECT
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth,
    -- Include the sum of incidents by day over each range
	___(ir.___) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	ir.IncidentTypeID = 2
GROUP BY
	-- GROUP BY needs to include all non-aggregated columns
	c.___,
	c.___,
	c.___
-- Fill in your grouping operator
WITH ___
ORDER BY
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth;
แก้ไขและรันโค้ด