BaşlayınÜcretsiz başlayın

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

Kursa Göz Atın

Egzersiz talimatları

  • DATEDIFF() ile LAG() veya LEAD()'i birlikte kullanarak son olaydan bu yana geçen günleri hesapla.
  • DATEDIFF() ile LAG() veya LEAD()'i birlikte kullanarak bir sonraki olaya kadar kalan günleri hesapla.
  • NOT: Bu egzersizde NumberOfIncidents sü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;
Kodu Düzenle ve Çalıştır