您的位置:首页 > 其它

ROW_NUMBER() OVER函数的基本用法

2011-07-10 00:17 495 查看
看到很多分组函数,今天看到ROW_NUMBER() OVER函数对这个函数功能不了解,基本没有用过,
拿来研究一把,部分资料参看/article/7010550.html;但是需求和这里不完全一致;

详细函数介绍:

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。
示例:
xlh row_num
1700 1
1500 2
1085 3
710 4
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

下面我们看一个详细的例子;

1.需求描述,业务表含有3个字段,序号,部门ID,部门工资,通过SQL实现每个部门工资最高的那个部门ID,和最高工资;

2.业务表数据,
create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00);
insert into employee values(2,10,4500.00);
insert into employee values(3,20,1900.00);
insert into employee values(4,20,4800.00);
insert into employee values(5,40,6500.00);
insert into employee values(6,40,14500.00);
insert into employee values(7,40,44500.00);
insert into employee values(8,50,6500.00);
insert into employee values(9,50,7500.00);

commit;

3.实现sql
select * from

(

select  deptid,salary,row_number() over (partition by deptid order by salary desc) rn from employee

)

where rn = 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: