Oracle数据库笔记8(多列子查询,分页查询,合并查询)

本文深入探讨了SQL中的子查询应用,包括多列子查询的使用、部门平均工资及最高工资员工的查询方法、部门信息与人员数量的统计,以及分页查询和集合操作的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//表见笔记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';

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值