开始使用免费开始使用

对比 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;
编辑并运行代码