शुरू करेंमुफ़्त में शुरू करें

इंसिडेंट्स के बीच बीते दिनों की गणना

पिछले दो अभ्यासों में आपने देखा होगा कि हर सप्ताह के हर दिन इंसिडेंट नहीं होते, इसलिए 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;
कोड संपादित करें और चलाएँ