Menghitung hari berlalu antarinsiden
Hal yang mungkin Anda perhatikan pada dua latihan sebelumnya adalah bahwa insiden tidak selalu terjadi setiap hari dalam seminggu, sehingga menyebut LAG() dan LEAD() sebagai "hari sebelumnya" agak menyesatkan; yang lebih tepat adalah "periode sebelumnya." Manajemen juga menyadari hal ini dan, pada akhir Juli, ingin mengetahui jumlah hari antarinsiden. Untuk itu, kita akan menghitung dua nilai: jumlah hari sejak insiden sebelumnya dan jumlah hari hingga insiden berikutnya.
Ingat bahwa DATEDIFF() memberikan selisih antara dua tanggal. Kita dapat menggabungkannya dengan LAG() dan LEAD() untuk mendapatkan hasilnya.
Latihan ini merupakan bagian dari kursus
Analisis Deret Waktu di SQL Server
Instruksi latihan
- Hitung jumlah hari sejak insiden terakhir dengan mengombinasikan
DATEDIFF()danLAG()atauLEAD(). - Hitung jumlah hari hingga insiden berikutnya dengan mengombinasikan
DATEDIFF()danLAG()atauLEAD(). - CATATAN: Anda tidak perlu menggunakan kolom
NumberOfIncidentsdalam latihan ini.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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;