- 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 ); |
时间: 2024-10-26 14:38:28