ROW_NUMBER() OVER函数的基本用法

看到很多分组函数,今天看到ROW_NUMBER() OVER函数对这个函数功能不了解,基本没有用过,

拿来研究一把,部分资料参看http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.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


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值