1.取得每个部门最高薪水的人员名称
(1)按照部门分组,找到每组薪水的最大值
select
max(sal) as maxsal, deptno
from
emp
group by
deptno;
(2)上表做临时表,和emp做表连接,条件是 e.deptno = t.deptno and e.sal = t.maxsal
select
e.ename,e.sal,e.deptno
from
emp
join
(select max(sal) as maxsal, deptno from emp group by deptno) t
on
e.deptno = t.deptno and e.sal = t.maxsal;
4、不准用max,取得最高薪水
select ename,sal from emp order by desc sal limit 1;
select a.sal from emp a join emp b on a.sal < b.sal
select sal from emp where sal not in (select distinct a.sal from emp a join emp b on a.sal < b.sal)
5、取得平均薪水最高的部门的部门编号
select avg(sal),deptno from emp group by deptno order by avg(sal) desc limt 1;
6、求平均薪水的等级最低的部门的部门名称
(1) 计算每个部门的平均薪水
t表
select
deptno, avg(sal) as avgsal
from
emp
group by
deptno;
(2)查询每个部门的平均薪水等级
u
select
t.deptno, s.salgrade
from
t
join
salgrade s
on
t.avgsal between s.losal and s.hisal
order by
s.salgrade desc
limit 1;
(3) 选出部门名称
select
d.dname
from
dept d
join
u
on
u.deptno = d.deptno;
6、案例:查询津贴为null的员工/n
select ename, sal, comm from emp where comm is null;
7、 查询工作岗位为manager和salesman的员工
select ename, job from emp where job = 'manager' or job = 'salesman';
8、查询工资大于2500,并且部门编号为10或20的员工
select ename, sal, deptno from emp where sal > 2500 and (deptno = 10 or deptno = 20);
9、查询名字中含有o的员工
select ename from emp where ename like '%o%';
10、查询第三个字母是R的员工/n
select ename from emp where ename like '__o%';
11、查询名字中有_的员工
select ename from emp where ename like '%\_%'
12、案例:查询所有员工的薪资,降序排列/n
select ename, sal from emp order by sal desc;
13、查询员工的名字和薪资,要求按照薪资升序,如果薪资一样再按照名字降序排列/n
select ename,sal from emp order by sal,ename asc;
14、案例:查询员工的年薪/n
select ename, (sal + ifnull(comm, 0)) * 12 as yearsal from emp;
15、 案例:查询最高工资/n
select max(sal) from emp;
slect sal from emp order by sal limit 1;
16、查询最低、平均工资和工资和
select min(sal) from emp;
select avg(sal) from emp;
select sum(sal) from emp;
17、案例:查询员工数量/n
select count(*) from emp ;
18、案例:查询每个部门的平均薪资/n
select deptno,avg(sal) from emp group by deptno;
19、查询每个工作岗位的工资和
select job, sum(sal) from emp group by job;
20、案例: 查询每个部门,不同工作岗位的的最高薪资(多字段分组) /n
select deptno, job, max(sal) from emp group by deptno,job;
21、查询每个部门的最高薪资,要求显示薪资大于3000的 /n (having 和 where都能使用)
select deptno, max(sal) from emp group by deptno having max(sal) > 3000;
select deptno, max(sal) from emp where sal > 3000 group by deptno;
22、案例:查询出每个员工的薪资等级,要求显示员工名,薪资,薪资等级/n
select e.enam, e.sal, s.grade from emp e join salgrade s on e.sal between s.lowsal and s.highsal;
23、查询员工的上级领导,要求显示员工名和对应的领导名/n
select a.ename, b.ename from emp a join emp b on a.mgr = b.empno;