动力节点34道MySQL经典练习题

这篇博客提供了动力节点的34道MySQL经典练习题,涵盖了薪水、部门平均薪资、薪水等级等多个方面的问题,旨在帮助程序员提升MySQL操作技能。题目包括获取每个部门最高薪水的员工、找出薪水在部门平均薪资之上的员工、计算部门平均薪水等级等,还提供了详细的解题思路和SQL查询代码。
摘要由CSDN通过智能技术生成

@MySQL经典34道题

动力节点34道MySQL经典练习题

手动敲代码,不敲代码不是一名合格的程序员!!!

下面是bjpowernode的sql文件,进入MySQL然后source导入下就可以练习了哈

链接:https://pan.baidu.com/s/1TLt4pzGZC4pQEvp4JKtF1Q
提取码:pray

1、取得每个部门最高薪水的人员名称
select deptno,max(sal) as maxsal from emp group by deptno;//把这个当作零时表t看待;

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

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

先找出每个部门的平均薪水
select deptno,avg(sal) from emp as avgsal group by deptno;

将以上的表当作t表,t表与emp表进行连接
select
t.*, e.ename, e.sal
from
emp e
join
(select deptno,avg(sal) as avgsal from emp group by deptno) t
on
e.deptno=t.deptno and e.sal>t.avgsal;

思路:既然要找哪些人薪水在部门平均水平之上,那就找每个部门的平均薪水,以部门编号划分,然后以这张表作为零时表t,与emp表进行连接,要找出员工名称,员工薪水以及所在部门编号,用join on 连接,on后面跟条件,e表和t表要相等并且e表的sal要比t表的avgsal要高。

3、取得部门中所有人平均的薪水等级,
注意:

平均的薪水等级:先计算所有的平均薪水,然后计算薪水的等级;
平均薪水的等级:先计算每一个薪水的等级,然后计算出所有等级的平均;

思路:先找出每个人的薪水等级;emp e和salgrade s 表相连,连接条件:e.sal between s.local and s.hisal;

select
e.ename,e.sal,e.deptno,s.grade
from
emp e
join
salgrade s
on
e.sal between s.losal and s.hisal;

然后计算每个平均的薪水等级
select
e.deptno,avg(s.grade)
from
emp e
join
salgrade s
on
e.sal between s.losal and s.hisal
group by
e.deptno;

4、不用组函数(max),取得最高薪水
第一种(降序,取第一个):select ename,sal from emp order by sal desc limit 1;
第二种(max):select max(sal) from emp;
第三种:表的自连接

select sal from emp where sal not in(
select
distinct a.sal
from
emp a
join
emp b
on
a.sal<b.sal); (找出a表里面小于b表的工资,distinct代表去重)

5、取得平均薪水最高的部门的部门编号;(给出两种解决方案)

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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值