zjz008

SqlServer2005起新增了4个新的排名函数:ROW_Number,RANK,DENSE_RANK和NTILE。这些函数提供了一种简单高效的方式来执行排名计算。

从技术上来讲,其他排名函数和ROW_NUMBER类型,但他们的实际应用却少很多。Rank和DENSE_RANK主要用于排名和积分,NTILE更多用于分析。

 排名函数只能用于查询的SELECT和ORDER BY子句中。排名函数的一般形式如下:

ranking_function OVER(PARTITION BY col_list] ORDER BY col_list)

可选的PARTITION BY子句允许为行的每个分组分别计算排名值。

 

RANK和DENSE_RANK 

RANK和DENSE_RANK 与ROW_NUMBER 的区别是当ORDER BY列表不唯一时,ROW_NUMBER 是不确定的,而RANK和DENSE_RANK是确定的,即具有相同排序值的行总是能被分配相同的排名值。RANK和DENSE_RANK的区别在于,RANK生成的排名值可能有间断,DENSE_RANK没有间断。

看下面示例(NORTHWIND_Order Detail) :

SELECT OrderID ,Quantity, 

RANK() OVER(ORDER BY Quantity) AS rnk,
DENSE_RANK() 
OVER(ORDER BY Quantity ) AS drnk
FROM [Order Details]
ORDER BY Quantity

 

 

结果如下,第三列为RANk函数结果,第四列为DENSE_RANK函数结果

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2022-01-31
  • 2021-08-15
  • 2021-12-24
  • 2022-02-02
猜你喜欢
  • 2021-12-31
  • 2021-11-29
  • 2022-02-16
  • 2022-02-05
  • 2021-11-19
  • 2022-01-16
  • 2021-08-21
相关资源
相似解决方案