ysu_dong

导航

 

Rank,Dense_rank,Row_number函数为每条记录产生一个从1开始至N的自然数,N的值可能小于等于记录的总数。这3个函数的唯一区别在于当碰到相同数据时的排名策略。

1.Row_Number:

Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。 

2.Dense_Rank:
Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。 

3.Rank:
Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。

1 SELECT STU_CLASS,STU_NAME,STU_ADD,STU_AGE,
2 RANK()OVER(PARTITION BY STU_CLASS ORDER BY STU_AGE) RANK,
3 DENSE_RANK()OVER(PARTITION BY STU_CLASS ORDER BY STU_AGE) DENSE_RANK,
4 ROW_NUMBER()OVER(PARTITION BY STU_CLASS ORDER BY STU_AGE) ROW_NUMBER
5 FROM DX_TEST

 

例:从结果中可以看出 班级3中,不同年龄排序依次增大,遇到26岁相同年龄时,(1)rank()值相同,但会空出4排位,27岁排名为第5;(2)dense_rank()值也相同,但不会空出排位,下一值排列仍按+1递增;(3)

row_number()值递增,不论年龄是否相同。

posted on 2013-01-22 15:05  ysu_dx  阅读(276)  评论(0)    收藏  举报