Olaylar arasındaki geçen günleri hesaplama
Önceki iki egzersizde fark etmiş olabileceğin bir şey var: her haftanın her gününde olay yaşanmıyor; bu yüzden LAG() ve LEAD() için "önceki gün" demek biraz yanıltıcı; aslında bu "önceki dönem". Yönetimdeki biri de bunu fark etti ve Temmuz sonunda olaylar arasındaki gün sayısını öğrenmek istedi. Bunu yapmak için iki değer hesaplayacağız: önceki olaydan bu yana geçen gün sayısı ve bir sonraki olaya kadar kalan gün sayısı.
DATEDIFF()'in iki tarih arasındaki farkı verdiğini unutma. Sonuçları elde etmek için bunu LAG() ve LEAD() ile birleştirebiliriz.
Bu egzersiz, kursun bir parçasıdır
SQL Server'da Zaman Serisi Analizi
Egzersiz talimatları
DATEDIFF()ileLAG()veyaLEAD()'i birlikte kullanarak son olaydan bu yana geçen günleri hesapla.DATEDIFF()ileLAG()veyaLEAD()'i birlikte kullanarak bir sonraki olaya kadar kalan günleri hesapla.- NOT: Bu egzersizde
NumberOfIncidentssütununu kullanmana gerek yok.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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;