Mulai sekarangMulai gratis

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

Lihat Kursus

Instruksi latihan

  • Hitung jumlah hari sejak insiden terakhir dengan mengombinasikan DATEDIFF() dan LAG() atau LEAD().
  • Hitung jumlah hari hingga insiden berikutnya dengan mengombinasikan DATEDIFF() dan LAG() atau LEAD().
  • CATATAN: Anda tidak perlu menggunakan kolom NumberOfIncidents dalam 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;
Edit dan Jalankan Kode