//表见笔记7
多列子查询:from字句使用子查询时,该子查询会被作为一个临时表对待,并且必须给子查询指定别名(否则无法访问子查询的表)
//如何显示高于每个员工自己所在的部门平均工资的员工信息
select emp.deptno,emp.ename, emp.sal,t1.avgsal
from emp,(select avg(sal) avgsal,deptno
from emp group by deptno) t1
where emp.deptno=t1.deptno and emp.sal>t1.avgsal;
//查询每个部门工资最高的员工信息
select *
from emp,( select max(sal) avgsal,deptno
from emp group by deptno) t1
where emp.deptno=t1.deptno and emp.sal=t1.avgsal;
//显示每个部门的信息和人员数量
select dept.dname,dept.loc, countempno,t1.deptno
from dept,(select count(empno) countempno,deptno
from emp group by deptno) t1
where dept.deptno=t1.deptno;
//发现没有40号部门的信息(40号没有雇员)
select dept.dname,dept.loc, countempno,dept.deptno
from dept,(select count(empno) countempno,deptno
from emp group by deptno) t1
where dept.deptno=t1.deptno(+);
//分页查询 rownum
//如果取第四行至第六行的内容
select t2.* from
(select t1.empno,t1.ename,rownum "rw" from (select * from emp) t1 where rownum<=6) t2
where t2."rw">=4;
//或者
select t2.* from
(select emp.empno,emp.ename,rownum "rw" from emp where rownum<=6) t2
where t2."rw">=4;
//合并查询 union(并集),union all(不去重复行,且不排序),intersect(交集),minus(差集)
//select ename,sal,job from emp where sal>2500 union all select ename,sal,job from emp where job='MANAGER';