사건 간 경과 일수 계산하기
이전에 풀었던 두 연습 문제에서 눈치채셨을 수 있듯이, 사건은 요일마다 항상 발생하지 않기 때문에 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;