MySQL经典50题目,必须拿下!

Posted 菜鸟学Python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL经典50题目,必须拿下!相关的知识,希望对你有一定的参考价值。

本文中介绍的是mysql经典50题的第21-25题目,主要涉及的知识点包含:
  • 分组统计求和,百分比
  • 如何利用SQL实现排序
  • having使用
  • union拼接

5个题目是:

  • 查询不同 老师所教不同 课程平均分从高到低显示
  • 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
  • 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比
  • 查询学生的平均成绩及名次
  • 查询各科成绩前三名的记录

题目21

MySQL经典50题目,必须拿下!

题目需求

查询不同老师所教不同课程平均分从高到低显示

分析过程

涉及到的表主要是

老师:Teacher

课程:Course,作为主表

成绩:Score

通过3个表的连接求出来即可

SQL实现

先找出每个老师教授了哪些课程:

select 
 c.c_name
 ,t.t_name
from Course c
left join Teacher t
on c.t_id = t.t_id;
MySQL经典50题目,必须拿下!

将上面的结果和成绩表连接起来:

select 
 c.c_name
 ,t.t_name
 ,round(avg(s.s_score),2)  score   -- 课程分组后再求均值
from Course c   -- 主表,通过两次连接
left join Teacher t
on c.t_id = t.t_id
left join Score s
on c.c_id = s.c_id
group by c.c_id   -- 课程分组
order by 3 desc;  -- 降序
MySQL经典50题目,必须拿下!

题目22

MySQL经典50题目,必须拿下!

题目需求

查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

分析过程

成绩:Score

学生信息:Student

我们通过取出每科的第2、3名拼接起来再取出学生信息

SQL实现

自己的方法

1、课程表和成绩表连接起来,显示所有的课程和成绩信息

select 
 s.s_id
 ,s.c_id
 ,s.s_score
 ,c.c_name
from Score s
join Course c
on s.c_id = c.c_id
MySQL经典50题目,必须拿下!

2、查出全部的语文成绩

select s.s_id, s.s_score, c.c_name
from Score s
join Course c on s.c_id = c.c_id
where c.c_name = '语文'
order by s.s_score desc;
MySQL经典50题目,必须拿下!

3、我们找出语文的第2、3的学生

select s.s_id, s.s_score, c.c_name
from Score s
join Course c on s.c_id = c.c_id
where c.c_name = '语文'
order by s.s_score desc
limit 12;
MySQL经典50题目,必须拿下!

4、同时求出语文、数学、英语的分数,并且通过union拼接

-- union连接

(select s.s_id, s.s_score, c.c_name
from Score s
join Course c on s.c_id = c.c_id
where c.c_name = '语文'
order by s.s_score desc
limit 12)

union

(select s.s_id, s.s_score, c.c_name
from Score s
join Course c on s.c_id = c.c_id
where c.c_name = '数学'
order by s.s_score desc
limit 12)

union
((select s.s_id, s.s_score, c.c_name
from Score s
join Course c on s.c_id = c.c_id
where c.c_name = '英语'
order by s.s_score desc
limit 12))
MySQL经典50题目,必须拿下!

5、将上面的结果学生信息表进行连接即可

好歹是实现了

以上是关于MySQL经典50题目,必须拿下!的主要内容,如果未能解决你的问题,请参考以下文章

面试必备:MySQL经典50题~学会SQL面试不在话下

MySQL经典50题-第31-35题

MySQL经典50题_第1到5题

java基本类型几个字节,这些知识你必须拿下

C语言100个经典算法源码片段

BootStrap有用代码片段(持续总结)