一、需要查询的数据
1 、查询出月薪大于 'SMITH' 的所有员工资料
select *from emp where sal>(select sal from emp where name="SMITH");
2 、查询所有员工的姓名及领导姓名
select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno(+);
3 、查询出入职日期早于领导的所有员工编号,姓名,部门名称。
先查出员工姓名,领导姓名,入职时期 .
在题目 2 的基础上,多增加一个入职日期条件,增加 deptno 表,增加去除笛卡尔积的关联条件
select e1.empno,e1.ename,e2.ename,d.dname from emp e1,emp e2,dept d where e1.mgr=e2.empno(+) and e1.hiredate<e2.hiredate and e1.deptno=d.deptno;
4 、查出部门名称和部门员工信息 ( 没有员工的部门也需要体现 )
select d.dname,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno
from dept d,emp e
where d.deptno=e.deptno(+);
5 、查出职位是“ CLERK ”的姓名及其部门名和部门人数
select e.ename,d.dname,t.c
from emp e,dept d,(select deptno,count(empno) c from emp where job='CLERK'
group by deptno) t
where e.job='CLERK' AND e.deptno=d.deptno and e.deptno=t.deptno;
6 、查出最低工资大于 1500 的各种工作及其从事这些工作的全部员工人数。
已知条件: min(sal)>1500
6.1 、查处每个部门中最低工资的员工信息。
select deptno,min(sal) from emp group by deptno;
6.2 、查出职位工资的最低工资大于 1500 的所有工作和工资。
Select job,min(sal) from emp group by job having min(sal)>1500
6.3 、查询出所有职位,以及从事这个职位的人数。
Select job,count(empno) from emp group by job;
6.4 合并出最后结果:
Select job,min(sal),count(empno) from emp group by job having min(sal)>1500