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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文讲解了MySQL练习题的解题思路和答案

MySQL练习题(二)

9、取得薪水最高的前五名员工

select 
    e.ename,e.sal
from 
    emp e
order by
    e.sal desc
limit 0,5;

在这里插入图片描述

10、取得薪水最高的第六到第十名员工

select 
    e.ename,e.sal
from 
    emp e
order by
    e.sal desc
limit 5,5;

在这里插入图片描述

11、取得最后入职的 5 名员工

select ename,hiredate from emp order by hiredate desc limit 5;

在这里插入图片描述

12、取得每个薪水等级有多少员工

(1)求每个人的薪水等级

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

在这里插入图片描述

(2)将结果按照等级分组 求每个级别的数量 (可以不用视图,我这里只是想试一试)

create view view_empgrade as select e.ename,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal; #用结果创建一个视图
select grade,count(*) from view_empgrade group by grade;

在这里插入图片描述

13、面试题:(*)

有 3 个表 S(学生表),C(课程表),SC(学生选课表)
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
问题:

13.1、找出没选过“黎明”老师的所有学生姓名。

select s.sname from s join sc on s.sno = sc.sno join c on c.cno = sc.cno where c.cteacher <> '黎明';

13.2、列出 2 门以上(含2 门)不及格学生姓名及平均成绩。

(1)先找出所有grade小于60的学生

select s.sname,sc.grade from s join sc on s.sno = sc.sno where sc.grade < 60;

(2)将这个结果按学生的姓名按照条件进行分组,并求平均值

select 
    s.sname,avg(sc.grade) 
from 
    s 
join 
    sc 
on
    s.sno = sc.sno 
where 
    sc.grade < 60
group by
    s.sname
having
    count(*) >= 2;

13.3、既学过 1 号课程又学过 2 号课所有学生的姓名。

(1)先找出学过1号课程的学生

select s.sname from s join sc on s.sno = sc.sno where sc.cno = 1;

(2)再从上面结果查找学过2号课程的学生

select 
    s.sname 
from 
    s 
join 
    sc 
on 
    s.sno = sc.sno 
where 
    in(select s.sname from s join sc on s.sno = sc.sno where sc.cno = 1) and sc.cno = 1;

14、列出所有员工及领导的姓名

select 
    a.ename '员工', b.ename '领导' 
from 
    emp a
left join
    emp b
on 
    a.mgr = b.empno;

在这里插入图片描述

15、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称

(1)找出受雇日期早于其直接上级的所有员工的编号,姓名

select 
    a.empno,a.ename,a.deptno
from 
    emp a
left join
    emp b
on
    a.mgr = b.empno
where
    a.hiredate < b.hiredate;

在这里插入图片描述

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

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

在这里插入图片描述

16、 列出部门名称和这些部门的员工信息的同时列出那些没有员工的部门

select 
    e.*,d.dname
from
    emp e
right join
    dept d
on
    e.deptno = d.deptno;

在这里插入图片描述

OPERATIONS这个部门没有员工

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
SQL 关系型数据库 MySQL
MySQL子查询篇(精选20道子查询练习题)-2
MySQL子查询篇(精选20道子查询练习题)
32 0
|
4天前
|
SQL 关系型数据库 MySQL
MySQL子查询篇(精选20道子查询练习题)-1
MySQL子查询篇(精选20道子查询练习题)
43 0
|
10月前
|
关系型数据库 MySQL
【MySQL】经典练习题(部门表、员工表、工资表)
【MySQL】经典练习题(部门表、员工表、工资表)
185 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL子查询篇(精选20道子查询练习题)-2
MySQL子查询篇(精选20道子查询练习题)
47 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL子查询篇(精选20道子查询练习题)-1
MySQL子查询篇(精选20道子查询练习题)
136 0
|
9月前
|
关系型数据库 MySQL
MySQL练习题
MySQL练习题
59 0
|
9月前
|
关系型数据库 MySQL
MySQL练习题(单表多表查询)
MySQL练习题(单表多表查询)
155 0
|
SQL 关系型数据库 MySQL
MySQL基础练习题(含详细答案)
MySQL基础练习题(含详细答案)
540 0
|
SQL 算法 安全
【MySQL】数据库视图的介绍、作用、创建、查看、删除和修改(附练习题)
文章目录 1 视图的介绍与作用 2 视图的创建 3 视图的修改 4 视图的更新 5 视图的重命名与删除 6 视图的练习 6.1 数据准备 6.2 查询平均分最高的学校名称 写在最后
【MySQL】数据库视图的介绍、作用、创建、查看、删除和修改(附练习题)
|
关系型数据库 MySQL
MySQL练习题
MySQL课后练习题
444 1

推荐镜像

更多