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

ดูข้อมูลย้อนหลังสามช่วงเวลา

Window function LAG() และ LEAD() ช่วยให้เรามองย้อนหลังหรือมองไปข้างหน้าตามลำดับเวลาได้ ทำให้สามารถเปรียบเทียบข้อมูลระหว่างช่วงเวลาต่าง ๆ ได้ในคิวรีเดียว การเรียกใช้ LAG() หรือ LEAD() แต่ละครั้งจะคืนค่า NULL หรือข้อมูลจากแถวเดียว หากต้องการดูข้อมูลย้อนหลังหลายช่วงเวลา สามารถเรียกใช้ LAG() หรือ LEAD() หลายครั้งได้

ในแบบฝึกหัดนี้ เราต้องการเปรียบเทียบจำนวนเหตุการณ์ด้านความปลอดภัยรายวัน สำหรับประเภทเหตุการณ์ 1 และ 2 ในเดือนกรกฎาคม 2019 โดยเฉพาะช่วงวันที่ 2 ถึง 31 กรกฎาคม ฝ่ายบริหารต้องการดูข้อมูลแบบหน้าต่างเลื่อน 4 วันแยกตามประเภทเหตุการณ์ เพื่อตรวจสอบแนวโน้มที่มีนัยสำคัญ โดยเริ่มย้อนหลัง 2 วันและมองล่วงหน้า 1 วัน

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

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

ดูคอร์ส

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

  • เติม SQL เพื่อคืนค่าจำนวนเหตุการณ์จากสองช่วงเวลาก่อนหน้า
  • เติม SQL เพื่อคืนค่าจำนวนเหตุการณ์จากช่วงเวลาก่อนหน้า
  • เติม SQL เพื่อคืนค่าจำนวนเหตุการณ์จากช่วงเวลาถัดไป

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

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

SELECT
	ir.IncidentDate,
	ir.IncidentTypeID,
    -- Fill in two periods ago
	___(ir.___, ___) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
	) AS Trailing2Day,
    -- Fill in one period ago
	___(ir.___, ___) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
	) AS Trailing1Day,
	ir.NumberOfIncidents AS CurrentDayIncidents,
    -- Fill in next period
	___(ir.___, ___) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
	) AS NextDay
FROM dbo.IncidentRollup ir
WHERE
	ir.IncidentDate >= '2019-07-01'
	AND ir.IncidentDate <= '2019-07-31'
	AND ir.IncidentTypeID IN (1, 2)
ORDER BY
	ir.IncidentTypeID,
	ir.IncidentDate;
แก้ไขและรันโค้ด