日期:2014-05-16  浏览次数:20396 次

oracle 分组常用

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

?

查询每个部门的最高工资

select deptno,ename,sal from
???? (select deptno,ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order
???????? from scott.emp) where sal_order <2;

?

rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).