2.oracle分页,找到员工表中薪水大于本部门平均薪水的员工
ROWNUM的知識(shí)點(diǎn)
A ROWNUM按照oracle的默認(rèn)機(jī)制生成。
B rownum只能使用<= ?<號(hào),不能使用>? >=
rownum的實(shí)現(xiàn)機(jī)制
rownum表示,返回的結(jié)果集的行號(hào)(是一個(gè)屬性,固化到一行之中,不會(huì)因?yàn)槟闩判?#xff0c;而發(fā)生變化)。沒有第一行,就沒有第二行;沒有第二行就沒有第三行。
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之間的數(shù)據(jù)(分頁(yè))
| 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;
|
|
|
總結(jié):內(nèi)存排序,外層選
Oracle分頁(yè)思想總結(jié):
(內(nèi)層排序,外層選,需要三層查詢)
內(nèi):排序
中:使用rownum選擇前n條;并給rownum指定一個(gè)別名,以供最外層過濾使用。
外:去掉前m條結(jié)果。
找到員工表中薪水大于本部門平均薪水的員工
員工表?? 本部門平均薪水
思路1:查員工的薪水?? 本部門平均薪水
???? ?本部門關(guān)系
?
要去本部門的薪水,需要求部門的薪水,要對(duì)部門分組è分組
???
思路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
| 相關(guān)子查詢:主查詢的參數(shù),讓子查詢用,一般是通過別名技術(shù)。 |
| 一般子查詢:子查詢的結(jié)果,被主查詢使用 |
| 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 );
|
|
|
?
?
總結(jié)
以上是生活随笔為你收集整理的2.oracle分页,找到员工表中薪水大于本部门平均薪水的员工的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.子查询知识体系,单行子查询,多行子查
- 下一篇: spool命令、创建一个表,创建并且co