Önceki üç dönemi görmek
LAG() ve LEAD() pencere fonksiyonları, sırasıyla zamanda geriye veya ileriye bakmamızı sağlar. Bu sayede dönemden döneme verileri tek, kolay bir sorguda karşılaştırabiliriz. Her LAG() veya LEAD() çağrısı ya NULL ya da tek bir satır döner. Birden fazla döneme geriye bakmak istiyorsan, birden fazla LAG() veya LEAD() çağrısı ekleyebilirsin.
Bu egzersizde, Temmuz 2019 boyunca, özellikle 2 Temmuz'dan başlayıp 31 Temmuz'da biten dönemde, 1 ve 2 numaralı olay türleri için günlük güvenlik olayı sayılarını karşılaştırmak istiyoruz. Yönetim, olay türüne göre iki gün geriden başlayıp bir gün ileriye bakan, dört günlük kayan bir pencere görmek istiyor; böylece belirgin eğilimler olup olmadığını anlayabilirler.
Bu egzersiz, kursun bir parçasıdır
SQL Server'da Zaman Serisi Analizi
Egzersiz talimatları
- İki dönem önceki olay sayısını döndürecek SQL'i doldur.
- Önceki dönemden olay sayısını döndürecek SQL'i doldur.
- Sonraki dönemden olay sayısını döndürecek SQL'i doldur.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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;