MySQL经典练习题+解题思路(三)

CSDN话题挑战赛第2期
参赛话题:学习笔记
img

个人主页BoBooY的CSDN博客_Java领域博主

前言:在上一期中我们讲解了MySQL的入门知识点,但理论总还是要通过实践来印证,学了再多不练也是白费,这一期我们讲解MySQL的一些经典查询例题帮助大家巩固已学知识点,如在做题过程中有知识点的遗忘,可以参考往期文章:
MySQL入门知识点(上):https://blog.csdn.net/qq_58233406/article/details/127143537
MySQL入门知识点(下):https://blog.csdn.net/qq_58233406/article/details/127144532

MySQL练习题(三)

17、列出至少有 5 个员工的所有部门

select 
	d.deptno,d.dname,count(e.ename) '人数'
from 
	emp e
join 
	dept d
on 
	e.deptno = d.deptno
group by
	e.deptno
having
	count(e.ename) >=5;

在这里插入图片描述

18、列出薪金比"SMITH" 多的所有员工信息

select 
	*
from 
	emp e
where
	sal > (select sal from emp where ename = "SMITH");

在这里插入图片描述

19、 列出所有"CLERK"( 办事员) 的姓名及其部门名称, 部门的人数

(1)找出所有CLERK的人员

select 
	*
from
	emp
where
	job = 'CLERK';

在这里插入图片描述

(2)找上面结果对应的部门名称

select 
	e.ename,e.job,d.dname,d.deptno
from
	emp e
join
	dept d
on
	e.deptno = d.deptno
where
	job = 'CLERK';

在这里插入图片描述

(3)查询每个部门的人数

select 
	deptno,count(*)
from 
	emp e
group by
	deptno;

在这里插入图片描述

(4)将这两个结果合并

	select 
        t1.dname,t1.job,t1.deptno,t2.num
    from(
        select 
            e.ename ename,e.job job,d.dname dname,d.deptno deptno
        from
            emp e
        join
            dept d
        on
            e.deptno = d.deptno
        where
            job = 'CLERK'
        ) t1
    join(
        select 
            deptno,count(*) num
        from 
            emp e
        group by
            deptno
        ) t2
    on
        t1.deptno = t2.deptno;

在这里插入图片描述

20、列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数

select 
	job,count(*) '人数'
from 
	emp
group by
	job
having
	min(sal) > 1500;

在这里插入图片描述

21、列出在部门"SALES"< 销售部> 工作的员工的姓名, 假定不知道销售部的部门编号.(*)

select 
	ename,job
from 
	emp
where
	deptno in(select deptno from dept where dname = 'SALES');

在这里插入图片描述

22、列出薪金高于公司平均薪金的所有员工, 所在部门, 上级领导, 雇员的工资等级.

(1)查询公司平均薪资

select avg(sal) from emp;

在这里插入图片描述

(2)查询高于上面结果的人员信息

select a.ename,a.deptno,b.ename,a.sal 
from emp a 
left join emp b 
on a.mgr = b.empno 
where a.sal > (select avg(sal) from emp);

在这里插入图片描述

(3)将上面结果与dept表进行内连接

select 
	t.ename,t.deptno,t.sal,d.dname,t.mgr
from
	(select a.ename ename,a.deptno deptno,b.ename mgr,a.sal sal
     from emp a 
     left join emp b 
     on a.mgr = b.empno 
     where a.sal > (select avg(sal) from emp)) t
join 
	dept d
on
	t.deptno = d.deptno;

在这里插入图片描述

(4)将上面结果与salgrade表进行内连接

select 
	t.ename,t.deptno,t.sal,d.dname,t.mgr '领导',s.grade
from
	(select a.ename ename,a.deptno deptno,b.ename mgr,a.sal sal
     from emp a 
     left join emp b 
     on a.mgr = b.empno 
     where a.sal > (select avg(sal) from emp)) t
join 
	dept d
on
	t.deptno = d.deptno
join
	salgrade s
on 
	t.sal between s.losal and s.hisal;

在这里插入图片描述

23、 列出与"SCOTT" 从事相同工作的所有员工及部门名称

select
	e.ename,e.job,d.dname
from
	emp e
join 
	dept d
on
	e.deptno = d.deptno
where
	e.job = (select job from emp where ename = 'SCOTT') and e.ename <> 'SCOTT';

在这里插入图片描述

24、列出薪金等于部门 30 中员工的薪金的其他员工的姓名和薪金.

select 
	ename,sal
from
	emp
where
	sal in(select distinct sal from emp where deptno = 30) and deptno <> 30;

在这里插入图片描述

25、列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名和薪金. 部门名称

select 
	e.ename,e.sal,d.dname
from 
	emp e
join
	dept d
on
	e.deptno = d.deptno
where
	e.sal > (select  max(sal) from emp e where e.deptno = 30);

在这里插入图片描述

练习题集:
MySQL经典练习题+解题思路(一):https://blog.csdn.net/qq_58233406/article/details/127150051
MySQL经典练习题+解题思路(二):https://blog.csdn.net/qq_58233406/article/details/127162943
MySQL经典练习题+解题思路(四):https://blog.csdn.net/qq_58233406/article/details/127167682

尾声:创作不易,如果本文的内容对您有帮助,还望客官可以三连支持一下博主,👍(点赞)+✏️(评论)+⭐️(收藏)是我创作的巨大动力!如果有关于Java入门相关的问题,可以关注私信一下博主,随时为您解答!

img

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-BoBooY-

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值