MySql作业题

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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值