傅老师课堂:Oracle高级查询之OVER (PARTITION BY ..)

这篇博客介绍了Oracle SQL中的OVER(PARTITION BY ...)函数的用法,包括rank()、dense_rank()、min()、max()、lead()和lag()的应用。通过实例讲解了如何查询部门内雇员的排名、工资差额以及相邻工资对比。同时,给出了带有order by子句时的影响。
摘要由CSDN通过智能技术生成
开篇一笑:某日一妹子对男友说:在一起这么久了你都没有夸过我漂亮,今天我要你夸夸我,男子想了一会看着女友鸡冻的说道:我硬了。


为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的。

注:标题中的红色order by是说明在使用该方法的时候必须要带上order by。

一、rank()/dense_rank() over(partition by ...order by ...)

现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句:
select e.ename, e.job, e.sal, e.deptno
  from scott.emp e,
       (select e.deptno, max(e.sal) sal from scott.emp e group by e.deptno) me
 where e.deptno = me.deptno
   and e.sal = me.sal;
在满足客户需求的同时,大家应该习惯性的思考一下是否还有别的方法。这个是肯定的,就是使用本小节标题中rank() over(partition by...)或dense_rank() over(partition by...)语法,SQL
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值