시작하기무료로 시작하기

사건 간 경과 일수 계산하기

이전에 풀었던 두 연습 문제에서 눈치채셨을 수 있듯이, 사건은 요일마다 항상 발생하지 않기 때문에 LAG()LEAD()를 "이전 날"이라고 부르는 것은 조금 부정확합니다. 실제로는 "이전 기간"에 가깝죠. 경영진도 이를 파악했고, 7월 말에 사건 간 일수를 알고 싶어 했습니다. 이를 위해 두 값을 계산하겠습니다. 이전 사건 이후 경과 일수와 다음 사건까지 남은 일수입니다.

DATEDIFF()는 두 날짜 사이의 차이를 반환한다는 점을 기억하세요. 이를 LAG()LEAD()와 결합해 원하는 결과를 얻을 수 있습니다.

이 연습은 강의의 일부입니다

SQL Server에서의 시계열 분석

강의 보기

연습 안내

  • DATEDIFF()LAG() 또는 LEAD()를 조합해 마지막 사건 이후 경과 일수를 계산하세요.
  • DATEDIFF()LAG() 또는 LEAD()를 조합해 다음 사건까지 남은 일수를 계산하세요.
  • 참고: 이 연습 문제에서는 NumberOfIncidents 열을 사용할 필요가 없습니다.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

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;
코드 편집 및 실행