基于oracle的scott用户下emp表的练习(子查询篇)

select * from emp;
--1.查询公司员工编号最小的员工姓名、工资和入职时间
select ename,sal,hiredate
from emp
where empno=(select min(empno) from emp);
--2.查询和20号部门的员工入职年份和工作相同的员工姓名,工资和工作
select ename,sal,job
from emp
where (to_char(hiredate,'yyyy'),job)
in(select to_char(hiredate,'yyyy'),job from emp where deptno=20);
--3.查询出公司所有是经理的员工姓名,工作,工资和部门编号;
select ename,job,sal,deptno 
from emp e
where exists(select '1' from emp where mgr=e.empno);
--4.查询部门平均工资大于2000的部门名称和平均工资。
select e.deptno,avg(sal)
from emp e,dept d
where e.deptno=d.deptno
group by e.deptno
having avg(sal)>2000;
--5.查询工资比自己经理高的员工姓名和工资,以及对应经理的姓名和工资
select e.ename,e.sal,m.ename,m.sal
from emp e,emp m
where e.mgr=m.empno
and e.sal>m.sal;
--6.查询比本部门平均工资低的员工姓名、薪水和部门的平均工资
select 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;

猜你喜欢

转载自blog.csdn.net/TKHKHT/article/details/85209207