ROW_NUMBER(), RANK(), DENSE_RANK() 비교하기
순위 윈도 함수 중에서는 ROW_NUMBER()가 가장 흔히 쓰이고, 그다음이 RANK()와 DENSE_RANK()예요. 이들 순위 함수(NTILE() 포함)는 SQL Server에서 레코드에 순위를 매기는 서로 다른 방법을 제공합니다.
이번 연습에서는 데이터셋에서 사건 유형 3이 얼마나 자주 발생하는지 확인해 보려고 합니다. 사건 수를 내림차순으로 정렬해, 사건 수가 가장 많은 날짜의 행 번호, 랭크, 그리고 덴스 랭크가 1이 되도록 하세요. 따라가기 쉽도록, 사건이 최소 8건 이상인 날짜만 포함하겠습니다.
이 연습은 강의의 일부입니다
SQL Server에서의 시계열 분석
연습 안내
- 열 별칭에 맞게 각 윈도 함수를 채워 넣으세요.
ROW_NUMBER(),RANK(),DENSE_RANK()를 각각 한 번씩 포함해야 합니다. OVER절에서는ir.NumberOfIncidents를 내림차순으로 정렬하도록 지정하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
SELECT
ir.IncidentDate,
ir.NumberOfIncidents,
-- Fill in each window function and ordering
-- Note that all of these are in descending order!
___() OVER (___ ___ ir.NumberOfIncidents ___) AS rownum,
___() OVER (___ ___ ir.NumberOfIncidents ___) AS rk,
___() OVER (___ ___ ir.NumberOfIncidents ___) AS dr
FROM dbo.IncidentRollup ir
WHERE
ir.IncidentTypeID = 3
AND ir.NumberOfIncidents >= 8
ORDER BY
ir.NumberOfIncidents DESC;