开篇一笑:某日一妹子对男友说:在一起这么久了你都没有夸过我漂亮,今天我要你夸夸我,男子想了一会看着女友鸡冻的说道:我硬了。
为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的。
一、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分别如下:
select e.ename, e.job, e.sal, e.deptno
from (select e.ename,

这篇博客介绍了Oracle SQL中的OVER(PARTITION BY ...)函数的用法,包括rank()、dense_rank()、min()、max()、lead()和lag()的应用。通过实例讲解了如何查询部门内雇员的排名、工资差额以及相邻工资对比。同时,给出了带有order by子句时的影响。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



