ดูข้อมูลช่วงเวลาก่อนหน้าและถัดไป
Window function LAG() และ LEAD() ช่วยให้เราสามารถมองย้อนหลังหรือมองไปข้างหน้าตามลำดับเวลาได้ตามลำดับ ทำให้เปรียบเทียบข้อมูลแบบ period-over-period ได้ในคิวรีเดียวอย่างสะดวก
ในแบบฝึกหัดนี้ เราต้องการเปรียบเทียบจำนวนเหตุการณ์ด้านความปลอดภัยรายวัน สำหรับประเภทเหตุการณ์ 1 และ 2 ในเดือนกรกฎาคม 2019 โดยเฉพาะช่วงตั้งแต่วันที่ 2 กรกฎาคม ถึง 31 กรกฎาคม
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์อนุกรมเวลาใน SQL Server
คำแนะนำการฝึกหัด
- เติม window function เพื่อดึงจำนวนเหตุการณ์ของวันก่อนหน้า โดย partition ตาม incident type ID และเรียงลำดับตามวันที่เกิดเหตุการณ์
- เติม window function เพื่อดึงจำนวนเหตุการณ์ของวันถัดไป โดย partition ตาม incident type ID และเรียงลำดับตามวันที่เกิดเหตุการณ์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
-- Get the prior day's number of incidents
___(ir.___, ___) OVER (
-- Partition by incident type ID
PARTITION BY ir.___
-- Order by incident date
ORDER BY ir.___
) AS PriorDayIncidents,
ir.NumberOfIncidents AS CurrentDayIncidents,
-- Get the next day's number of incidents
___(ir.___, ___) OVER (
-- Partition by incident type ID
PARTITION BY ir.___
-- Order by incident date
ORDER BY ir.___
) AS NextDayIncidents
FROM dbo.IncidentRollup ir
WHERE
ir.IncidentDate >= '2019-07-02'
AND ir.IncidentDate <= '2019-07-31'
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;