mysql查询练习题
mysql查询练习题:用到了group by,case when
Part 1
学生表
成绩表
1.查询所有学生的数学成绩,显示学生姓名name, 分数, 由高到低
$select s.name,g.score from student,grade where s.id=g.id and kemu=math;
2.统计每个学生的总成绩,显示字段:姓名,总成绩
$select s.name,sum(score) from student s,grade g where s.id=g.id group by name;
3.统计每个学生的总成绩(由于学生可能有重复名字),显示字段:学生id,姓名,总成绩
$select s.id,s,name,sum(g.score) from student s,grade g where s.id=g.id group by id;
4.列出各门课程成绩最好的学生, 要求显示字段: 学号,姓名,科目,成绩
SELECT c.id , a.name, c.kemu, c.score FROM grade c, student a, (SELECT b.kemu, MAX(b.score) as max_score FROM grade b GROUP BY kemu) t WHERE c.kemu = t.kemu AND c.score = t.max_score AND a.id = c.id
Part02
学生表
成绩表
5.计算学生平均分数:计算每个人的平均成绩, 要求显示字段: 学号,姓名,平均成绩
$select s.id,s.name,avg(g.score) from student s ,grade g where s.id=g.id group by s.id;
6.统计各科目成绩:计算每个人的成绩,总分数,平均分,要求显示:学号,姓名,语文,数学,英语,总分,平均分
#这里涉及的新知识为:case when以及sum(case when),延伸包含count (case when)
使用case when 语法把科目字段分解成具体的科目:语文,数学, 英语
不加sum(case when):统计的还是每一行记录
$select s.id as 学号,s.name as 姓名,(case when g.kemu='语文' then score else 0 end) as 语文,(case when g.kemu='数学' then score else 0 end) as 数学,(case when g.kemu='英语' then score else 0 end) as 英语 from student s,grade g where s.id=g.id;
加sum (case when),对应的要加group by按照人员分组,然后统计每一门的成绩
$select s.id as 学号,s.name as 姓名,sum(case when g.kemu='语文' then score else 0 end) as 语文,sum(case when g.kemu='数学' then score else 0 end) as 数学,sum(case when g.kemu='英语' then score else 0 end) as 英语 from student s,grade g where s.id=g.id group by s.id;
tip :如果成绩表中有相同的两条记录时,比如一个学生考了语文两次的成绩,那么sum (case when)统计一个学生各个课程的成绩就会有问题了,如下图
整条查询要求对应的sql语句:
$SELECT a.id as 学号, a.name as 姓名,
sum(case when b.kemu='语文' then score else 0 end) as 语文,
sum(case when b.kemu='数学' then score else 0 end) as 数学,
sum(case when b.kemu='英语' then score else 0 end) as 英语,
sum(b.score) as 总分 , avg(b.score) as 平均分
FROM student a, grade b
where a.id = b.id GROUP BY b.id, b.id
7.每门课程平均成绩:列出各门课程的平均成绩,要求显示字段:课程,平均成绩
$select kemu,avg(score) from grade group by kemu;
8.成绩排名:列出数学成绩的排名, 要求显示字段:学号,姓名,成绩,排名
#在统计排名时,用到一个自增变量的写法,注意!
select s.id,s.name,g.score,@paiming :=@paiming +1 from student s,grade g,(select @paiming:=0) r where s.id=g.id and g.kemu='数学' order by g.score desc ;
这里最后需要感谢我的数据库同学在我整理学习过程中对我的帮助~,唐撒阿米达
mysql查询练习题相关推荐
- mysql怎么分组计算逾期率_转行数据分析第三篇:mysql查询入门练习题
这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...
- mysql 查询姓王_MySQL查询语句练习题,测试足够用了
MySQL查询语句练习题,测试足够用了 博客分类: http://blog.sina.com.cn/s/blog_767d65530101861c.html 1.创建student和score表 CR ...
- MySQL代做题_转行数据分析第三篇:mysql查询入门练习题
这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...
- hive sql练习_经典的SparkSQL/Hive-SQL/MySQL面试-练习题
经典的SparkSQL/Hive-SQL/MySQL面试-练习题mp.weixin.qq.com 第一题 需求: 已知一个表order,有如下字段:date_time,order_id,user_i ...
- 六、MySQL 数据库练习题1(包含前5章练习题目及答案)
文章目录 一.数据库概述练习题 二.MySQL 环境搭建练习题 三.查询练习 MySQL 数据库练习题(包含前5章所有知识点及答案) 前置知识: 一.数据库开发与实战专栏导学及数据库基础概念入门 二. ...
- mysql查询学生表的总人数,MySQL查询练习2
MySQL查询练习2 导读: 本次MySQL的查询语句是本人考试题目: 所有题目都已通过: 该查询练习并没有sql文件进行检查: 如果有书写以及其他错误欢迎指出. 题目正文: 1.找出借书超过5本的借 ...
- MySQL 数据库练习题记录01
文章目录 前言 一.数据库练习题一 1.1 表结构 1.2 查询所有学生的信息(学号,姓名,性别,班级名称) 1.3 查询所有人(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数, ...
- 尚硅谷MySQL课后练习题笔记
尚硅谷MySQL课后练习题 视频地址:[宋红康]MySQL数据库(mysql安装/基础/高级/优化)_哔哩哔哩_bilibili 数据库资源地址:链接:https://pan.baidu.com/s/ ...
- mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。
下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...
最新文章
- Hive UDF初探
- elasticsearch 条件去重_elasticsearch去重计数
- consul 1.2 支持service mesh
- hadoop中如何动态更新集群队列和容量
- SameNameFile 比较两个文件夹是否同名
- input的type属性的修改
- Centos7安装并配置mysql5.6完美教程
- macOS Big Sur无法完成安装 Big Sur为什么安装不了?
- Hibernate之一对多与多对一映射
- 阶段3 3.SpringMVC·_07.SSM整合案例_06.ssm整合之编写MyBatis框架
- 【基于深度学习的人机对弈机器人——视觉识别】
- python简易网络验证(零成本)
- zblog html代码,简单快速修改zblog模板的重要代码
- CentOS8 多网卡BondingTeam
- element-ui表格的滚动条样式修改(当固定table表格高度时默认滚动条样式太丑)
- mysql的用户名迁移SCHEMA_数据库实时转移之Confluent环境搭建(二)
- MarkdownPad安装及基本配置
- 桌面上计算机图标移动变成复制,电脑桌面图标都变成lnk后缀怎么办
- Java学习——JDBC之从导Jar包到封装
- SzNOI语法百题之1-10