Mulai sekarangMulai gratis

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

Lihat Kursus

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;
Edit dan Jalankan Kode