Začněte nyníZačněte zdarma

Výpočet počtu dní mezi incidenty

Možná sis v předchozích dvou cvičeních všiml/a, že incidenty nenastávají každý den v týdnu – označení LAG() a LEAD() jako „předchozí den" proto může být trochu zavádějící; jde spíš o „předchozí období". I vedení si toho všimlo a na konci července chtělo znát počet dní mezi incidenty. Vypočítáme proto dvě hodnoty: počet dní od posledního incidentu a počet dní do dalšího incidentu.

Připomeň si, že DATEDIFF() vrací rozdíl mezi dvěma daty. Kombinací s LAG() a LEAD() snadno získáme požadované výsledky.

Toto cvičení je součástí kurzu

Time Series Analysis in SQL Server

Zobrazit kurz

Pokyny k cvičení

  • Vypočítej počet dní od posledního incidentu pomocí kombinace DATEDIFF() a LAG() nebo LEAD().
  • Vypočítej počet dní do dalšího incidentu pomocí kombinace DATEDIFF() a LAG() nebo LEAD().
  • POZNÁMKA: v tomto cvičení sloupec NumberOfIncidents nepoužiješ.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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;
Upravit a spustit kód