数据库row_number()的简单用法

row_number(),简单来说就是每一条记录返回数字。

现在,oracle数据库以及sql server数据库都支持了row_number() over ()的用法,具体用法也很相似。

下面通过一个简单的例子来说一下row_number()的简单用法。

我们创建一个表结构以及表数据(student_info)如下所示

学号         姓名            班级           入学班级名次

001          李四               1                          4 

002          张三               2                          1

003          王五               1                          3

004          赵六               2                          4

005          李毅               1                          2

006          钱七               2                          3

007          张八               1                          1

008          李九               2                          2

例1:根据学号的顺序生成row_number

select  学号,姓名,班级,入学班级名次,row_number() over(order by 学号)  number from student_info.

结果:

学号         姓名            班级           入学班级名次   number

001          李四               1                          4                   1

002          张三               2                          1                   2

003          王五               1                          3                   3

004          赵六               2                          4                   4

005          李毅               1                          2                   5

006          钱七               2                          3                   6

007          张八               1                          1                   7

008          李九               2                          2                   8

例2:在班级内根据学号大小生成row_number,这样生成的row_number将根据班级分组,然后再班级里面排序生成,到另一个分组里面,初值将重新变为1,是不是跟group by语句的用法很相似。

select  学号,姓名,班级,入学班级名次,row_number() over(partition by 班级 order by 入学班级名次)  number from student_info.

学号         姓名            班级           入学班级名次   number

007          张八               1                          1                   1

005          李毅               1                          2                   2

003          王五               1                          3                   3

001          李四               1                          4                   4

002          张三               2                          1                   1

008          李九               2                          2                   2

006          钱七               2                          3                   3

004          赵六               2                          4                   4


当然,over条件里面的 partition by以及order by语句可以根据多列分组,多列排序,与查询语句中的group by以及order by语句类似。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值