环境windows server + Oracle + sql*plus
目的以oracle自带的scott模式为测试环境主要通过试验体会分析函数的用法
row_number() 的使用
原表信息
SQL> break on deptno skip 为效果更明显把不同部门的数据隔段显示
SQL> select deptnoenamesal
from emp
order by deptnosal desc;
DEPTNO ENAME SAL
KING
CLARK
MILLER
SCOTT
FORD
JONES
ADAMS
SMITH
BLAKE
ALLEN
TURNER
WARD
MARTIN
JAMES
已选择行
使用row_number()查出各部门薪水最高的三个员工姓名薪水多于三个的只取三个
SQL> select * from (
select deptnorow_number() over(partition by deptno order by sal desc) rwenamesal
from emp
)
where rw<=;
DEPTNO RW ENAME SAL
KING
CLARK
MILLER
SCOTT
FORD
JONES
BLAKE
ALLEN
TURNER
已选择行
体会row_number() 返回的主要是行的信息并没有按照sal排名如
SCOTT
FORD
scott与ford薪水一样多ford前面的仅仅是行数记录条数的感念