Vendo os três períodos anteriores
As funções de janela LAG() e LEAD() nos permitem olhar, respectivamente, para trás ou para frente no tempo. Isso nos dá a capacidade de comparar dados período a período em uma única consulta simples. Cada chamada a LAG() ou LEAD() retorna NULL ou uma única linha. Se você quiser ver vários períodos anteriores, pode incluir várias chamadas a LAG() ou LEAD().
Neste exercício, queremos comparar o número de incidentes de segurança por dia para os tipos de incidente 1 e 2 durante julho de 2019, especificamente o período que começa em 2 de julho e termina em 31 de julho. A gerência gostaria de ver uma janela deslizante de quatro dias por tipo de incidente para identificar possíveis tendências significativas, começando dois dias antes e olhando um dia à frente.
Este exercício faz parte do curso
Análise de Séries Temporais no SQL Server
Instruções do exercício
- Complete o SQL para retornar o número de incidentes de dois períodos atrás.
- Complete o SQL para retornar o número de incidentes do período anterior.
- Complete o SQL para retornar o número de incidentes do próximo período.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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;