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 );
|
|
|
?
?
總結
以上是生活随笔為你收集整理的2.oracle分页,找到员工表中薪水大于本部门平均薪水的员工的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.子查询知识体系,单行子查询,多行子查
- 下一篇: 平安银行降额是风控吗