시작하기무료로 시작하기

필터링된 집계 계산하기

특정 필터 기준에 따라 어떤 사건이 몇 번 발생했는지 세려면 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;
코드 편집 및 실행