oracle中的三个分组排名函数

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,499评论 0 10
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,553评论 0 13
  • 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句。 问题及描述: --1.学生表 Stud...
    lijun_m阅读 1,343评论 0 1
  • row_number的用途非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意...
    奶茶007阅读 1,331评论 0 1
  • 设计师一方面要满足不同人的意见,一方面还要做出独特、让自己满意的设计,所以常常需要不断改进产品。 第一,清晰的条理...
    MAODSXX阅读 235评论 0 0