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

สร้างการจัดกลุ่มแบบกำหนดเองด้วย GROUPING SETS

ตัวดำเนินการ GROUPING SETS ช่วยให้กำหนดระดับการรวมข้อมูลที่ต้องการได้อย่างยืดหยุ่น

ในสถานการณ์นี้ ฝ่ายบริหารต้องการดูข้อมูลในรูปแบบที่คล้ายกับ ROLLUP แต่ไม่ละเอียดมากนัก แทนที่จะแสดงทุกระดับของการรวมข้อมูลในลำดับชั้น ฝ่ายบริหารต้องการเห็นเพียง 3 ระดับ ได้แก่ ยอดรวมทั้งหมด, รายปี, และรายปี-ไตรมาส-เดือน

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

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

ดูคอร์ส

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

  • เติมส่วน GROUP BY โดยใช้ GROUPING SETS โดยต้องการแสดงข้อมูลดังนี้:
  • หนึ่งแถวสำหรับทุกการรวมกันของปี ไตรมาส และเดือน (ตามลำดับชั้นนั้น)
  • หนึ่งแถวสำหรับแต่ละปี
  • หนึ่งแถวสำหรับยอดรวมทั้งหมด (กล่าวคือ กลุ่มว่างเปล่า)

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

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

SELECT
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth,
	SUM(ir.NumberOfIncidents) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	ir.IncidentTypeID = 2
-- Fill in your grouping operator here
GROUP BY ___ ___
(
  	-- Group in hierarchical order:  calendar year,
    -- calendar quarter name, calendar month
	(___, ___, ___),
  	-- Group by calendar year
	(___),
    -- This remains blank; it gives us the grand total
	()
)
ORDER BY
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth;
แก้ไขและรันโค้ด