ПочатиПочніть безкоштовно

Перегляд трьох попередніх періодів

Віконні функції LAG() і LEAD() дають змогу відповідно дивитися назад або вперед у часі. Це дозволяє порівнювати дані поміж періодами в одному простому запиті. Кожен виклик LAG() або LEAD() повертає або NULL, або значення з одного рядка. Якщо потрібно переглянути кілька попередніх періодів, можна додати кілька викликів LAG() або LEAD().

У цій вправі ми хочемо порівняти кількість інцидентів безпеки за днями для типів інцидентів 1 і 2 протягом липня 2019 року, зокрема за період із 2 липня до 31 липня. Керівництво хоче бачити ковзне чотириденне вікно за типом інциденту, щоб відстежити можливі тренди: починаючи за два дні до поточного дня і дивлячись на один день уперед.

Ця вправа є частиною курсу

Аналіз часових рядів у SQL Server

Переглянути курс

Інструкції до вправи

  • Доповніть SQL, щоб повернути кількість інцидентів за два періоди до поточного.
  • Доповніть SQL, щоб повернути кількість інцидентів за попередній період.
  • Доповніть SQL, щоб повернути кількість інцидентів за наступний період.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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;
Редагувати та запускати код