पिछली तीन अवधियों को देखना
LAG() और LEAD() विंडो फंक्शन हमें क्रमशः समय में पीछे या आगे देखने की क्षमता देते हैं। इससे हम एक ही, सरल क्वेरी में अवधि-दर-अवधि डेटा की तुलना कर सकते हैं। LAG() या LEAD() की हर कॉल या तो NULL लौटाती है या एक एकल पंक्ति। अगर आप कई पिछली अवधियाँ देखना चाहते हैं, तो आप LAG() या LEAD() को कई बार कॉल कर सकते हैं.
इस अभ्यास में, हम जुलाई 2019 के दौरान, खास तौर पर 2 जुलाई से 31 जुलाई तक की अवधि में, इन्सिडेंट टाइप 1 और 2 के लिए दैनिक सुरक्षा घटनाओं की संख्या की तुलना करना चाहते हैं। मैनेजमेंट प्रत्येक इन्सिडेंट टाइप के लिए चार दिनों की रोलिंग विंडो देखना चाहता है ताकि कोई महत्वपूर्ण ट्रेंड दिखे तो पता चल सके — दो दिन पहले से शुरू करते हुए और एक दिन आगे तक देखते हुए.
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Time Series Analysis
अभ्यास निर्देश
- 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;