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

การคำนวณผลรวมสะสมด้วย SUM()

หนึ่งในการใช้งาน window function ที่มีประสิทธิภาพมากที่สุดคือการคำนวณผลรวมสะสม (running total) ซึ่งเป็นการนับค่าสะสมต่อเนื่องของข้อมูลในช่วงเวลาหนึ่ง ในแบบฝึกหัดนี้ เราต้องการใช้ window function เพื่อนับจำนวนเหตุการณ์ที่เกิดขึ้นในแต่ละวันและแต่ละประเภทเหตุการณ์ในเดือนกรกฎาคม 2019 พร้อมกับคำนวณผลรวมสะสมของจำนวนเหตุการณ์จำแนกตามประเภท โดยใช้ window function เพียงหนึ่งคิวรีในการแก้ปัญหานี้

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

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

ดูคอร์ส

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

  • เติม window function ที่ถูกต้อง
  • เติมคำสั่ง PARTITION BY ใน window function โดย partition ตาม ID ประเภทเหตุการณ์
  • เติมคำสั่ง ORDER BY ใน window function โดยเรียงลำดับตามวันที่เกิดเหตุการณ์ (ค่าเริ่มต้น คือ เรียงจากน้อยไปมาก)

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

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

SELECT
	ir.IncidentDate,
	ir.IncidentTypeID,
	ir.NumberOfIncidents,
    -- Get the total number of incidents
	___(ir.NumberOfIncidents) OVER (
      	-- Do this for each incident type ID
		PARTITION BY ir.___
      	-- Sort by the incident date
		ORDER BY ir.___
	) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	c.CalendarYear = 2019
	AND c.CalendarMonth = 7
	AND ir.IncidentTypeID IN (1, 2)
ORDER BY
	ir.IncidentTypeID,
	ir.IncidentDate;
แก้ไขและรันโค้ด