Oracle高级查询之OVER (PARTITION BY ..)
为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的。 注:标题中的红色order by是说明在使用该方法的时候必须要带上order by。 一、rank()/dense_rank() over(partition by ... order by ... ) 现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句: [sql] view plain copy print ? 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; 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; 在满足客户需求的同时