Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL50-9-第31-35题

MySQL50-9-第31-35题

作者头像
皮大大
发布于 2021-03-01 08:06:27
发布于 2021-03-01 08:06:27
34700
代码可运行
举报
运行总次数:0
代码可运行

MySQL50-9-第31-35题

本文中介绍的是第31-35题目,主要涉及的知识点是:

  • 模糊匹配
  • 同时指定多种排序方式
  • 多表的连接查询

5个题目是:

  • 查询1990年出生的学生信息
  • 查询每门课程的平均成绩,结果按平均成绩降序排列;平均成绩相同时,按课程编号c_id升序排列
  • 查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
  • 查询课程名称为数学,且分数低于60的学生姓名和分数
  • 查询所有学生的课程及分数情况

题目31

题目需求

查询1990年出生的学生信息

分析过程

这个题目我们还是通过模糊匹配,使用的字段是s_birth

SQL实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select *
from Student
where s_birth like '1990%';   -- 模糊匹配

题目32

题目需求

查询每门课程的平均成绩,结果按平均成绩降序排列;平均成绩相同时,按课程编号c_id升序排列

分析过程

课程:Score/Course

成绩:Score

通过每门课程的平均成绩分组和排序

SQL实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 自己的方法
select
	c_id
	,round(avg(s_score),2) avg_score
from Score
group by 1
order by 2 desc, c_id;  -- 指定字段和排序方法

如果想带上课程的名称,需要和Course表进行联结

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 自己的方法
select
	c.c_id
	,c.c_name
	,round(avg(sc.s_score),2) avg_score
from Score sc
join Course c
on sc.c_id = c.c_id
group by 1,2
order by 3 desc, c.c_id;  -- 指定字段和排序方法

题目33

题目需求

查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩

分析过程
  • 按照学生求解平均分,再选择出大于85分的人
  • 和学生信息表进行联结,查出具体的信息
SQL实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 自己的方法
select
	sc.s_id
	,s.s_name
	,round(avg(sc.s_score),2) avg_score
from Score sc
join Student s
on sc.s_id = s.s_id
group by sc.s_id,s.s_name
having avg_score >= 85;

题目34

题目需求

查询课程名称为数学,且分数低于60的学生姓名和分数

分析过程

1、先从Score和Course表中找出数学小于60分的学生学号

2、 再和Student表连接查询出姓名

SQL实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select
	s.s_name
	,sc.s_score
from Score sc   -- 成绩表
join Student s  -- 学生信息表
on sc.s_id = s.s_id
join Course c  -- 课程表,指定数学
on sc.c_id = c.c_id
where c.c_name = '数学'
and sc.s_score < 60;  -- 指定成绩

看看真正的数据,的确只有一个人满足

题目35

题目需求

查询所有学生的课程及分数情况

分析过程
  1. 课程:Course
  2. 分数:Score
  3. 学生姓名:Student

通过Score的主表,两个字段和其他两个表连接起来查询即可

SQL实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
	s.s_id
	,s.s_name
	,sum(case c.c_name when '语文' then sc.s_score else 0 end) as '语文'  -- 语文分数
	,sum(case c.c_name when '数学' then sc.s_score else 0 end) as '数学'
	,sum(case c.c_name when '英语' then sc.s_score else 0 end) as '英语'
	,sum(sc.s_score) as '总分'  -- 每个人的总分
from Student s
left join Score sc
on s.s_id = sc.s_id
left join Course c 
on sc.c_id = c.c_id
group by s.s_id, s.s_name;   -- 学号和姓名的分组
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL经典50题:面试必备
标题 MySQL经典50题解析及答案 作者 Peter 微信 756803877 公众号 尤而小屋 时间 2021-09-02 MySQL经典50题解析及答案 下面是网传经典的MySQL50题的习题及参考答案💪,供参考和学习,有更好的方法或者不恰当的地方,欢迎提出来 <!--MORE--> 题目1 题目要求 查询"01"课程比"02"课程成绩高的学生的信息及课程分数 SQL实现 -- 方法1 select a.* ,b.s_score as 1_score ,c.s_score
皮大大
2021/09/02
1.9K0
MySQL经典50题:面试必备
MySQL50题-分类总结
笔者最近将网上流传的MySQL数据库经典50题进行了练习,梳理了一份自己的练习成果。下图是MySQL练习题中涉及到的4张表和它们的具体字段:
皮大大
2021/03/01
8280
MySQL50题-分类总结
MySQL练习题
用户11097514
2024/05/30
1170
小学生SQL50题
已知有如下4张表: 学生表: student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 课程表: course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 教师表: teacher(t_id,t_name) –教师编号,教师姓名 成绩表: ccore(s_id,c_id,s_s_score) –学生编号,课程编号,分数 要求,根据以上信息按照下面要求写出对应的SQL语句。看看你能答对几道题?
大数据真好玩
2019/08/08
8640
MySQL50-10-第36-40题
本文中介绍的是第36-40题目,涉及到的知识点都是多表的连接查询,需要指定不同的条件。5个题目分别是:
皮大大
2021/03/01
2900
MySQL50-10-第36-40题
深夜小酌,50道经典SQL题,真香~
  现在是6月9号00:15分,花了近3小时撸完这小50题,有点困了,不想对所谓标准答案了。。心中有猛虎,何必细嗅蔷薇?
陈哈哈
2022/06/12
9670
深夜小酌,50道经典SQL题,真香~
50道MySQL面试题,经典~
好了,请打开你亲爱的navicat,关闭百度、手机等一切阻碍你进步的绊脚石。开始你的表演~
码农编程进阶笔记
2022/08/18
9800
50道MySQL面试题,经典~
MySQL50-7-第21-25题
统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比
皮大大
2021/03/01
2660
MySQL50-7-第21-25题
MySQL50-6-第16-20题
学生信息:Student-------s_id,s_name,s_sex,s_birth
皮大大
2021/03/01
3890
MySQL50-6-第16-20题
Mysql Sql 语句练习题 (50道)
MySql 语句练习50题 表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 –3.教师表 Teacher(t_id,t_name) –教师编号,教师姓名 –4.成绩表 Score(s_id,c_id,s_score) –学生编号,课程编号,分数 测试数据 --建表 --学生表 CREATE TA
梅花
2020/09/28
6510
SQL练习题共50道附答案(MySQL)
大家可以根据自己的查询需求更改数据,如果你sql很6那么当然最好啦,如果不是特别厉害建议理解这50道Sql题目,完事你会发现自己进步蛮大!!!加油
JAVA葵花宝典
2019/11/18
1K0
MySQL50-11-第41-45题
统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
皮大大
2021/03/01
2730
MySQL50-11-第41-45题
超经典MySQL练习50题,做完这些你的SQL就过关了!
相信大多学习了 Mysql 数据库语言的同学都会上网找练习来练手,而大部分的人肯定知道有一篇 Mysql 经典练习题50题的帖子,上面的题目基本上涵盖了 Mysql 查询语句的关键知识点。
小F
2020/12/16
5.1K0
超经典MySQL练习50题,做完这些你的SQL就过关了!
Java面试——SQL语句题
【1】查询"01"课程比"02"课程成绩高的学生的信息及课程分数:当对一张表中的一列数据比较时,应当将一张表拆分为两张表;
Java架构师必看
2021/05/14
6180
mysql 练习题及答案 50道
— 1、查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号。 — 方法1 select * from score a inner join score b on (a.s_id = b.s_id and a.c_id=’01’ and b.c_id=’02’ and a.s_score>b.s_score); — 方法2 select * from score a inner join score b where (a.s_id = b.s_id and a.c_id=’01’ and b.c_id=’02’ and a.s_score>b.s_score); — 方法3 select * from (select * from score where c_id=’01’) as a inner join (select * from score where c_id=’02’) as b on a.s_id=b.s_id where a.s_score>b.s_score;
全栈程序员站长
2022/09/30
5590
MySQL50-5-第11-15题
自己的方法一开始在课程的最大数中没有使用Course表,导致多使用了一个临时表的结果,现在改成使用Course表的统计值(3)作为课程的总数:
皮大大
2021/03/01
7220
MySQL50-5-第11-15题
半个月时间把MySQL重新巩固了一遍,梳理了一篇几万字 “超硬核” 文章!
InnoDB类型数据表只有一个*. frm文件,以及上一级目录的ibdata1文件 MylSAM类型数据表对应三个文件:
全栈程序员站长
2022/07/02
9030
半个月时间把MySQL重新巩固了一遍,梳理了一篇几万字 “超硬核” 文章!
MySQL50-8-第26-30题
现有的数据中没有同名的学生,但是当班级人数增多的时候很有可能在班级上出现同名的学生
皮大大
2021/03/01
6870
MySQL50-8-第26-30题
sql语句练习50题(Mysql版)
表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 –3.教师表 Teacher(t_id,t_name) –教师编号,教师姓名 –4.成绩表 Score(s_id,c_id,s_score) –学生编号,课程编号,分数 测试数据 --建表 --学生表 CREATE TABLE `Student`
2020/03/26
8890
MySQL50-3-第1-5题
需要注意的是有些学生的有些课程是没有成绩的,所以只要一位同学的某科有成绩,而另外一位没有成绩,也算符合要求。
皮大大
2021/03/01
6120
MySQL50-3-第1-5题
相关推荐
MySQL经典50题:面试必备
更多 >
LV.5
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验