oracle中的三个分组排名函数

2019-06-03  本文已影响0人  liuxiaolin

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

上一篇 下一篇

猜你喜欢

热点阅读