ComeçarComece de graça

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

Ver curso

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