2.oracle分页,找到员工表中薪水大于本部门平均薪水的员工
-
ROWNUM的知识点
A ROWNUM按照oracle的默认机制生成。
B rownum只能使用<= <号,不能使用> >=
-
rownum的实现机制
rownum表示,返回的结果集的行号(是一个属性,固化到一行之中,不会因为你排序,而发生变化)。没有第一行,就没有第二行;没有第二行就没有第三行。
-
Oracle Top-N
select rownum,empno,ename,sal from (select empno,ename,sal from emp order by sal desc) where rownum <= 3;
|
|
4 求5=<x<=8之间的数据(分页)
select r,empno,ename,sal from ( select rownum r,empno,ename,sal from ( select empno,ename,sal from emp order by sal desc ) where rownum <=8 ) where r >= 5;
|
|
总结:内存排序,外层选
Oracle分页思想总结:
(内层排序,外层选,需要三层查询)
内:排序
中:使用rownum选择前n条;并给rownum指定一个别名,以供最外层过滤使用。
外:去掉前m条结果。
-
找到员工表中薪水大于本部门平均薪水的员工
员工表 本部门平均薪水
思路1:查员工的薪水 本部门平均薪水
本部门关系
要去本部门的薪水,需要求部门的薪水,要对部门分组è分组
思路2:查找员工表 和 部门薪水表 =====》多表查询
思路3:等值连接条件
方法1:
select e.empno,e.ename,e.sal,d.avgsal from emp e, (select deptno,avg(sal) avgsal from emp group by deptno) d where e.deptno=d.deptno and e.sal > d.avgsal;
|
|
方法2
相关子查询:主查询的参数,让子查询用,一般是通过别名技术。 |
一般子查询:子查询的结果,被主查询使用 |
select empno,ename,sal,(select avg(sal) from emp where deptno = e.deptno) avgsal from emp e where sal > ( select avg(sal) from emp where deptno = e.deptno );
|
|
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。