ComeçarComece de graça

Calculando dias decorridos entre incidentes

Algo que você pode ter notado nos dois exercícios anteriores é que nem sempre temos incidentes em todos os dias da semana, então chamar LAG() e LEAD() de “dia anterior” é um pouco enganoso; na verdade, é o “período anterior”. A gestão também percebeu isso e, no fim de julho, queria saber o número de dias entre os incidentes. Para fazer isso, vamos calcular dois valores: o número de dias desde o incidente anterior e o número de dias até o próximo incidente.

Lembre que DATEDIFF() fornece a diferença entre duas datas. Podemos combinar isso com LAG() e LEAD() para obter nossos resultados.

Este exercício faz parte do curso

Análise de Séries Temporais no SQL Server

Ver curso

Instruções do exercício

  • Calcule os dias desde o último incidente usando uma combinação de DATEDIFF() e LAG() ou LEAD().
  • Calcule os dias até o próximo incidente usando uma combinação de DATEDIFF() e LAG() ou LEAD().
  • OBSERVAÇÃO: você não precisará usar a coluna NumberOfIncidents neste exercício.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código