oracle中排序的几种用法与区别

查询出排序命令

  1. row_number()

select 字段名,row_number() over ([partition by 字段] order by score [desc]) from 表名;

row_number()函数:相同值的排名会递增(不会出现重复的排名,若值相同则继续向下递增)。

                        course                         score                        rank

                         001                               54                            1

                         002                               66                            2

                         003                               66                            3

                         003                               78                            4

                         002                               89                            5

                         002                               90                            6

                         004                               99                            7

                         001                               99                            8

                         004                              100                           9 

  1. rank()

select 字段名,rank() over ([partition by 字段] order by score [desc]) from 表名;

rank()函数:相同值的排名相同,但是排名相同的会占位,后续排号跳号。

                        course                         score                        rank

                         001                               54                            1

                         002                               66                            2

                         003                               66                            2

                         003                               78                            4               后续排号跳号

                         002                               89                            5

                         002                               90                            6

                         004                               99                            7

                         001                               99                            7

                         004                              100                           9               后续排号跳号

  1. dense_rank()

select 字段名,dense_rank() over ([partition by 字段] order by score [desc]) from 表名;

dense_rank()函数:相同值的排名相同,但是排名相同的不会进行占位,后续排号继续。

                        course                         score                        rank

                         001                               54                            1

                         002                               66                            2

                         003                               66                            2

                         003                               78                            3               后续排号继续

                         002                               89                            4

                         002                               90                            5

                         004                               99                            6

                         001                               99                            6

                         004                              100                           7              后续排号继续

关于partition by功能类似于分组,可以实现把需要排序的内容进行分组,但是结果集不会缩减。具体细节,大家可以尝试一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值