Oracle中的三种分组排名方法:
1、row_number() over( partition by 字段1 order by 字段2)
这个排名函数生成的排名序列是连续且唯一的,比如字段2中有2个相同的数值时,它仍然会给它排出前后顺序。
案例如下:
ID 字段1 字段2 row_number
01 A 12 1
02 A 18 2
02 B 18 3
03 C 15 4
2、rank() over(partition by 字段1 over by 字段2 )
这个排名函数生成的排名序列是跳跃式的序列,比如字段2中有2个相同的数值时,它会给出相同的排名并,就此跳过,继续给出下一个进行排名。
案例如下:
ID 字段1 字段2 rank
01 A 12 1
02 A 18 2
02 B 18 2
03 C 15 4
可以看到,上面的排名序列中,3是空缺的。
3、dense_rank() over(partiton by 字段1 over by 字段2)
这个排名函数也许连续的,第二名仍然会跟着第三名。
案例如下:
ID 字段1 字段2 dense_rank
01 A 12 1
02 A 18 2
02 B 18 2
03 C 15 3
网友评论