标签:
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
partition 划分,分割
--ROW_NUMBER() 就是生成一个有顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ID)
--还必须添加OVER语句以便告诉SQL Server你希望怎样添加行序号。
实例:初始化数据
create table school (id int,class varchar2(12),score decimal(10,2)) insert into school values (1,‘yiban‘,85.00); insert into school values (2,‘yiban‘,90.00); insert into school values (3,‘yiban‘,72.00); insert into school values (4,‘erban‘,60.00); insert into school values (5,‘erban‘,83.00); insert into school values (6,‘erban‘,76.00); insert into school values (7,‘sanban‘,92.00); insert into school values (8,‘sanban‘,63.00); insert into school values (9,‘sanban‘,59.00); insert into school values (10,‘sanban‘,77.00); insert into school values (11,‘siban‘,84.00)
数据显示为
需求:把所有同学的成绩按降序排列,再为降序后的每条记录返回一个序号
sql脚本:
select row_number()over(order by score desc) rank,score from school
数据显示为:
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内是连续的唯一的)
需求:根据班级分组,显示每个班级的成绩成绩排名
sql脚本:
select row_number()over(partition by class order by score desc) rank ,id,class,score from school
数据显示为:
标签:
原文地址:http://www.cnblogs.com/hdzcz/p/5072687.html