oracle 高级查询(关于EMP
)
emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal
薪金/comm佣金/deptno部门编号)
dept部门表(deptno部门编号/dname部门名称/loc地点)
工资 , 薪金 , 佣金
1(列出至少有一个员工的所有部门。
select dept.deptno from dept,emp where emp.deptno=dept.deptno
2(列出薪金比“SMITH”多的所有员工。
select ename from emp where sal>(select sal from emp where ename='SMITH') 3(列出所有员工的姓名及其直接上级的姓名。
select x.ename ,s.ename from emp x,emp s where x.mgr=s.empno
4(列出受雇日期早于其直接上级的所有员工。
select x.ename from emp x,emp s where x.mgr=s.empno and x.hiredate>s.hiredate 5(列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
select ename,dept.deptno,dname from dept left join emp on dept.deptno=emp.deptno 6(列出所有“CLERK”(办事员)的姓名及其部门名称。
select ename,dname from emp,dept where job='CLERK' and dept.deptno=emp.deptno 7(列出最低薪金大于1500的各种工作。
select job from emp group by job having min(sal)>1500;
8(列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
select ename from emp,dept where dname='SALES' and emp.deptno=dept.deptno 9(列出薪金高于公司平均薪金的所有员工。
select ename from emp where sal>(select avg(sal) from emp)
10(列出与“SCOTT”从事相同工作的所有员工。
select * from emp e where exists (select * from emp where job=e.job and ename='SCOTT') and e.ename!='SCOTT';
11(列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
select ename,sal from emp where sal in (select sal from emp where deptno=30) 12(列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
select ename,sal from emp where sal > all(select sal from emp where deptno=30) 13(列出在每个部门工作的员工数量、平均工资和平均服务期限。
select deptno, count(*),avg(sal), avg((sysdate-hiredate)/365) from emp group by deptno
14(列出所有员工的姓名、部门名称和工资。
select ename,dname,(nvl(comm,0)+sal) as gongzi from emp,dept where emp.deptno=dept.deptno
15(列出从事同一种工作但属于不同部门的员工的一种组合。
select x1.ename,x1.job,x1.deptno,x2.ename,x2.job,x2.deptno from emp x1,emp x2 where x1.job=x2.job and x1.deptno<>x2.deptno and rownum=1
16(列出所有部门的详细信息和部门人数。
select a.*,(select count(*) from emp where deptno=a.deptno) as 人数 from dept a
17(列出各种工作的最低工资。
select min(sal) from emp group by job
18(列出各个部门的MANAGER(经理)的最低薪金。
select min(sal ) from emp where job='MANAGER''
19(列出所有员工的年工资,按年薪从低到高排序。
select (sal*12) as sals from emp order by sals desc 20(列出比部门在20工作的所有员工的工资都高的员工信息。
select ename,sal from emp where sal > (select max(sal) from emp where deptno=20)
21(显示薪金最高的前五个员工的信息。
select ename from (select * from emp order by sal desc) where rownum<=5