一、在不知道部门“SALES”的部门编号的情况下,查出此部门的所有员工姓名。
select e.ename
from emp e
where e.deptno=(select deptno from dept where dname='SALES');
2、查询出月薪高于公司平均月薪的所有员工编号,姓名,所有部门编号,部门名称,上级领导名,以及
他的工资等级。
SELECT
e.empno,e.ename,e.deptno,d.deptno,d.dname,e1.ename,s.grade
from emp e,emp e1,dept d,salgrade s
where e.mgr=e1.empno(+) and e.deptno=d.deptno and e.sal between s.losal and s.hisal and
e.sal>(select avg(sal) from emp);
3、查询出与"SCOTT"从事同一工作的所有员工及部门名称。(不包括scott,用<>也可以)
select e.ename,d.dname from emp e,dept d where job=(select job from emp where
ename='SCOTT') and e.deptno=d.deptno and e.ename!='SCOTT';
4、查询出月薪等于部门30中员工的月薪的所有员工姓名和月薪。
select e.ename,e.sal from emp e where e.sal in (select sal from emp where deptno=30) and deptno!=30;
5、查出月薪高于部门30工作的所有员工月薪的,员工姓名,部门名。
All(查询语句):>最大值,<最小值
in() 再这个范围内有没有
any()比里面最小的大,比最大的小;
SELECT
e.ename,d.dname
from
emp e,dept d
where e.sal>(select max(sal) from emp where deptno=30) and e.deptno=d.deptno and e.deptno<>30;
6、查询出每个部门名,员工总数,平均工资,平均服务年限。
month_between(sysdate,e.hiredate)/12
//两个时间差多少个月/12是差多少年
select d.dname,count(e.empno),avg(e.sal),avg(months_between(sysdate,e.hiredate)/12)
from emp e,dept d
where e.deptno(+)=d.deptno
group by d.dname;