CommencezCommencez gratuitement

Calcul du nombre de jours écoulés entre les incidents

Vous avez peut-être remarqué dans les deux exercices précédents qu'il n'y a pas toujours des incidents chaque jour de la semaine. Parler du « jour précédent » avec LAG() et LEAD() est donc un peu trompeur : il s'agit plutôt de la « période précédente ». La direction l'a remarqué aussi et, à la fin de juillet, a voulu connaître le nombre de jours entre les incidents. Pour ce faire, nous allons calculer deux valeurs : le nombre de jours depuis l'incident précédent et le nombre de jours jusqu'au prochain incident.

Rappelez-vous que DATEDIFF() donne la différence entre deux dates. Nous pouvons le combiner avec LAG() et LEAD() pour obtenir nos résultats.

Cette activité fait partie du cours

Analyse de séries chronologiques dans SQL Server

Voir le cours

Instructions de l’exercice

  • Calculez le nombre de jours depuis le dernier incident en combinant DATEDIFF() avec LAG() ou LEAD().
  • Calculez le nombre de jours jusqu'au prochain incident en combinant DATEDIFF() avec LAG() ou LEAD().
  • REMARQUE : vous n'aurez pas besoin de la colonne NumberOfIncidents dans cet exercice.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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;
Modifier et exécuter le code