oracle 子查询和组合函数
--查询与“SCOTT”在同一个部门的员工
select empno,ename,deptno from emp where deptno in
(select deptno from emp where ename='SCOTT');
--查找不在销售部和财务部工作的雇员编号、姓名和部门编号。
select empno,ename,deptno from emp where deptno not in
(select deptno from dept where dname in ('SALES','ACCOUNTING'));
--EMP表中,找出每个超过他所在部门平均工资的员工编号,员工名称,薪水,部门编号。
select empno,ename,sal,deptno from emp e1 where sal >
(select avg(sal) from emp e2 where e1.deptno=e2.deptno);
--查询公司员工工资的最大值,最小值,平均值,总和
select max(sal),min(sal),avg(sal),sum(sal) from emp;
--查询各job的员工工资的最大值,最小值,平均值,总和
select job,max(sal),min(sal),avg(sal),sum(sal) from emp group by job;
--选择具有各个job的员工人数(提示:对job进行分组)
select job,count(ename) from emp group by job;
--显示平均工资为>2000的职位
select job,avg(sal) from emp group by job having avg(sal)>2500;
--计算工资在2000以上,各种职位的平均工资大于3000的职位及平均工资
Select job,avg(sal) From emp where sal>2000 group by job having avg(sal)>3000;
--找每个部门的最高和最低的工资
Select deptno,max(sal),min(sal) From emp group by deptno;
--显示出工作名称(job)中包含"MAN"的员工平均工资,最高工资,最低工资及工资的和
select avg(sal),max(sal),min(sal),sum(sal) from emp where job like '%MAN%';
--显示出20号部门的员工人数
select count(*) from emp where deptno=20;
--列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号
select ename from emp where deptno = (select deptno from dept where dname='SALES')
--列出薪金高于公司平均水平的所有雇员
select ename from emp where sal>(select avg(sal) from emp);
--列出某些雇员的姓名和薪金,条件是他们的薪金等于部门30中任何一个雇员的薪金
select ename,sal from emp where sal in (select sal from emp where deptno=30);
--列出各个部门的MANAGER(经理)的最低薪金
Select deptno,min(sal) from emp where job="manager" group by deptno
--查询工资比公司平均工资高的所有员工的员工号empno,姓名ename和工资sal。
select empno,ename,sal from emp where sal>(select avg(sal) from emp );