開始使用免費開始

比較 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;
編輯並執行程式碼