动力节点mysql课后练习34题

数据库文件

https://download.csdn.net/download/yougcave/18897401

数据库截图

emp 员工表

dept 部门表

salgrade 工资等级表

 

1、取得每个部门最高薪水的人员名称

第一步,先查出每个部门的最高工资是多少

select deptno, max(sal) maxsal from emp group by deptno

第二步,再找emp员工表和上面这个临时表里deptno和maxsal相等的数据

select e.ename,e.deptno,e.sal from emp e 
join 
(select deptno, max(sal) maxsal from emp group by deptno)t
on
e.deptno = t.deptno and e.sal = t.maxsal

2、哪些人的薪水在部门的平均薪水之上

第一步,先把平均薪水查出来

select deptno, avg(sal) avgsal from emp group by deptno;

第二步,把上面这个表当临时表,和员工表emp连接,查部门相同,薪水大于avgsal的数据就行了

SELECT e.ename,e.sal,e.deptno from emp e 
JOIN
(select deptno, avg(sal) avgsal from emp group by deptno)t
ON
e.deptno = t.deptno AND e.sal>t.avgsal

3、取得部门中(所有人的)平均的薪水等级

第一步,先查出所有人的薪水等级

select e.ename,e.deptno,s.grade from emp e
JOIN
salgrade s
ON
e.sal>=s.losal and e.sal<=s.hisal

第二步,把第一步查出来的表当成临时表来分组计算平均等级

select t.deptno, avg(t.grade) FROM
(select e.ename,e.deptno,s.grade from emp e
JOIN
salgrade s
ON
e.sal>=s.losal and e.sal<=s.hisal)t
group by t.deptno 

4、不准用组函数(Max),取得最高薪水

先看看max怎么用

select max(sal) from emp

一句就搞定了

不用max,就按sal从大到小排序取第一个值

select sal from emp order by sal desc limit 1

5、取得平均薪水最高的部门的部门编号

第一步,按第四题的思想,先算平均薪水,然后排序取第一个数据

select deptno,avg(sal) avgsal from emp 
group by deptno
order by avgsal desc
limit 1

第二步,在上面的小表里取出deptno就完事

select t.deptno
FROM
(select deptno,avg(sal) avgsal from emp 
group by deptno
order by avgsal desc
limit 1)t

6、取得平均薪水最高的部门的部门名称

第一步,和第五题的第一步一样,找出平均薪水最高的部门

select deptno,avg(sal) avgsal from emp 
group by deptno
order by avgsal desc
limit 1;

第二步,和dept部门表连接,用部门编号相同当条件,查部门名称

select 
d.dname 
FROM
dept d
JOIN
(select deptno,avg(sal) avgsal from emp 
group by deptno
order by avgsal desc
limit 1)t
on 
t.deptno=d.deptno

7、求平均薪水的等级最低的部门的部门名称

第一步,先算平均薪水

select deptno, avg(sal) from emp group by deptno

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youngcave2

等待第一笔打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值