先求出职位的平均工资,再查询
select ename,job
from emp e
where sal>(select avg(sal) from emp where job=e.job)
先求出部门最低工资,再查询
select empno,ename,sal
from emp e
where sal=(select min(sal) from emp where deptno=e.deptno)
部门名称跟其他不在同一份表,就需要嵌套进查询里面,传部门号进去单独查询
select empno,ename,(select dname from dept where deptno=e.deptno)
from emp e
根据自身的编号查询是否有员工的经理编号是相同的,大于0则为自己是经理
select *
from emp e
where (select count(empno) from emp where mgr =e.empno)>0
相反,判断为0则为不是经理
select *
from emp e
where (select count(empno) from emp where mgr =e.empno)=0
判断比自己工资还少的人数,比自己工资还少的人数为1,则自己为倒数第二
人数为0时,自己就是工资最少的那个人
select empno,ename,sal,deptno
from emp e
where (select count(empno) from emp
where deptno =e.deptno and sal<e.sal)<=1
and sal is not null
exists为判断是否“存在”,根据部门编号,查询是否有人
select dname
from dept d
where exists (select '1' from emp where deptno=d.deptno)
not exists 为不存在的意思
select dname
from dept d
where not exists (select '1' from emp where deptno=d.deptno)
查询出部门平均工资,再判断自身工资
select ename,deptno
from emp e
where sal>(select avg(sal) from emp where deptno =e.deptno)
根据经理编号与员工编号连接两个表
select e.ename,(select ename from emp where empno=e.mgr)
from emp e
查询部门最高的工资,再判断工资是否跟自己相等
select ename,sal
from emp e
where sal=(select max(sal) from emp where deptno =e.deptno)
判断比自己工资还高的人数,比自己工资还高的人数为1,则自己为第二
人数为0时,自己就是工资最高的那个人
select ename,sal,deptno
from emp e
where (select count(empno) from emp
where deptno =e.deptno and sal>e.sal)<=1
and sal is not null