इंसिडेंट्स के बीच बीते दिनों की गणना
पिछले दो अभ्यासों में आपने देखा होगा कि हर सप्ताह के हर दिन इंसिडेंट नहीं होते, इसलिए LAG() और LEAD() को "पिछला दिन" कहना थोड़ा भ्रामक है; यह वास्तव में "पिछला पीरियड" है। मैनेजमेंट में किसी ने भी यह नोटिस किया और जुलाई के अंत में, इंसिडेंट्स के बीच कितने दिन बीते यह जानना चाहा। ऐसा करने के लिए, हम दो मान निकालेंगे: पिछले इंसिडेंट के बाद से बीते दिनों की संख्या, और अगले इंसिडेंट तक के दिनों की संख्या.
याद रखें कि DATEDIFF() दो तारीखों के बीच का अंतर देता है। हम इसे LAG() और LEAD() के साथ मिलाकर अपना परिणाम निकाल सकते हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL Server में Time Series Analysis
अभ्यास निर्देश
DATEDIFF()औरLAG()याLEAD()के संयोजन का उपयोग करके पिछले इंसिडेंट के बाद से बीते दिनों की गणना करें.DATEDIFF()औरLAG()याLEAD()के संयोजन का उपयोग करके अगले इंसिडेंट तक के दिनों की गणना करें.- नोट: इस अभ्यास में आपको
NumberOfIncidentsकॉलम का उपयोग करने की आवश्यकता नहीं होगी।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
-- Fill in the days since last incident
___(DAY, ___(ir.IncidentDate, 1) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
), ir.___) AS DaysSinceLastIncident,
-- Fill in the days until next incident
___(DAY, ir.___, ___(ir.IncidentDate, 1) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
)) AS DaysUntilNextIncident
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;