Melihat tiga periode sebelumnya
Fungsi jendela LAG() dan LEAD() masing-masing memungkinkan kita melihat ke belakang atau ke depan dalam waktu. Ini memungkinkan kita membandingkan data antarperiode dalam satu kueri yang mudah. Setiap pemanggilan LAG() atau LEAD() mengembalikan NULL atau satu baris. Jika Anda ingin melihat beberapa periode ke belakang, Anda dapat menyertakan beberapa pemanggilan LAG() atau LEAD().
Dalam latihan ini, kita ingin membandingkan jumlah insiden keamanan per hari untuk tipe insiden 1 dan 2 selama Juli 2019, khususnya periode mulai 2 Juli hingga 31 Juli. Manajemen ingin melihat jendela bergulir empat hari berdasarkan tipe insiden untuk mengetahui apakah ada tren signifikan, dimulai dua hari sebelumnya dan melihat satu hari ke depan.
Latihan ini merupakan bagian dari kursus
Analisis Deret Waktu di SQL Server
Instruksi latihan
- Lengkapi SQL untuk menampilkan jumlah insiden dari dua periode yang lalu.
- Lengkapi SQL untuk menampilkan jumlah insiden dari periode sebelumnya.
- Lengkapi SQL untuk menampilkan jumlah insiden dari periode berikutnya.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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;