สร้างสรุปผลด้วย 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;