数据库row_number()的简单用法

来源:互联网 发布:淘宝美工助理激活卡号 编辑:程序博客网 时间:2024/06/05 17:41

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 0
原创粉丝点击