필터링된 집계 계산하기
특정 필터 기준에 따라 어떤 사건이 몇 번 발생했는지 세려면 SUM(), MIN(), MAX()와 같은 집계 함수와 CASE 식을 함께 사용할 수 있습니다. 예를 들어, SUM(CASE WHEN ir.IncidentTypeID = 1 THEN 1 ELSE 0 END)는 사건 유형 1에 해당하는 사건 수를 반환합니다. 각 사건 유형마다 하나의 SUM() 구문을 포함하면, 사건 유형 ID별로 데이터 세트를 피벗한 것이 됩니다.
이 시나리오에서 경영진은 사건 유형별로 "big-incident" 일수와 "small-incident" 일수가 각각 몇 일인지 알려 달라고 합니다. 경영진은 같은 날 같은 사건 유형이 5건을 초과하면 big-incident day로, 1건 이상 5건 이하이면 small-incident day로 정의합니다.
이 연습은 강의의 일부입니다
SQL Server에서의 시계열 분석
연습 안내
SUM()함수를 사용해 big-incident day와 small-incident day의 일수를 계산할 수 있도록CASE식을 채워 넣으세요.CASE식에서는 해당 필터 기준을 만족하면 1을, 그렇지 않으면 0을 반환하세요.- 열을 참조할 때는
ir.IncidentDate,it.IncidentType처럼 반드시 별칭을 함께 지정하세요!
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
SELECT
it.IncidentType,
-- Fill in the appropriate expression
SUM(___ WHEN ir.NumberOfIncidents > 5 THEN ___ ELSE ___ ___) AS NumberOfBigIncidentDays,
-- Number of incidents will always be at least 1, so
-- no need to check the minimum value, just that it's
-- less than or equal to 5
SUM(___ WHEN ir.NumberOfIncidents <= 5 THEN ___ ELSE ___ ___) AS NumberOfSmallIncidentDays
FROM dbo.IncidentRollup ir
INNER JOIN dbo.IncidentType it
ON ir.IncidentTypeID = it.IncidentTypeID
WHERE
ir.IncidentDate BETWEEN '2019-08-01' AND '2019-10-31'
GROUP BY
it.IncidentType;