EmpezarEmpieza gratis

Calcular los días transcurridos entre incidentes

Algo que quizá notaste en los dos ejercicios anteriores es que no siempre hay incidentes todos los días de la semana, así que llamar a LAG() y LEAD() el "día anterior" es un poco engañoso; en realidad es el "periodo anterior". En dirección también se dieron cuenta y, a finales de julio, quisieron saber el número de días entre incidentes. Para hacerlo, calcularemos dos valores: el número de días desde el incidente anterior y el número de días hasta el siguiente incidente.

Recuerda que DATEDIFF() devuelve la diferencia entre dos fechas. Podemos combinarlo con LAG() y LEAD() para obtener nuestros resultados.

Este ejercicio forma parte del curso

Análisis de series temporales en SQL Server

Ver curso

Instrucciones del ejercicio

  • Calcula los días desde el último incidente usando una combinación de DATEDIFF() y LAG() o LEAD().
  • Calcula los días hasta el siguiente incidente usando una combinación de DATEDIFF() y LAG() o LEAD().
  • NOTA: no necesitarás usar la columna NumberOfIncidents en este ejercicio.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

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;
Editar y ejecutar código