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查询练习题相关推荐

  1. mysql怎么分组计算逾期率_转行数据分析第三篇:mysql查询入门练习题

    这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...

  2. mysql 查询姓王_MySQL查询语句练习题,测试足够用了

    MySQL查询语句练习题,测试足够用了 博客分类: http://blog.sina.com.cn/s/blog_767d65530101861c.html 1.创建student和score表 CR ...

  3. MySQL代做题_转行数据分析第三篇:mysql查询入门练习题

    这篇练习题是我在学sql入门的时候做的,应该算是在网上能找到的习题里最基础的一篇,非常适合新手练习,如果你接触sql不超过半个月,建议可以看一下<sql必知必会>或<mysql必知必 ...

  4. hive sql练习_经典的SparkSQL/Hive-SQL/MySQL面试-练习题

    经典的SparkSQL/Hive-SQL/MySQL面试-练习题​mp.weixin.qq.com 第一题 需求: 已知一个表order,有如下字段:date_time,order_id,user_i ...

  5. 六、MySQL 数据库练习题1(包含前5章练习题目及答案)

    文章目录 一.数据库概述练习题 二.MySQL 环境搭建练习题 三.查询练习 MySQL 数据库练习题(包含前5章所有知识点及答案) 前置知识: 一.数据库开发与实战专栏导学及数据库基础概念入门 二. ...

  6. mysql查询学生表的总人数,MySQL查询练习2

    MySQL查询练习2 导读: 本次MySQL的查询语句是本人考试题目: 所有题目都已通过: 该查询练习并没有sql文件进行检查: 如果有书写以及其他错误欢迎指出. 题目正文: 1.找出借书超过5本的借 ...

  7. MySQL 数据库练习题记录01

    文章目录 前言 一.数据库练习题一 1.1 表结构 1.2 查询所有学生的信息(学号,姓名,性别,班级名称) 1.3 查询所有人(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数, ...

  8. 尚硅谷MySQL课后练习题笔记

    尚硅谷MySQL课后练习题 视频地址:[宋红康]MySQL数据库(mysql安装/基础/高级/优化)_哔哩哔哩_bilibili 数据库资源地址:链接:https://pan.baidu.com/s/ ...

  9. mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

    下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...

最新文章

  1. Hive UDF初探
  2. elasticsearch 条件去重_elasticsearch去重计数
  3. consul 1.2 支持service mesh
  4. hadoop中如何动态更新集群队列和容量
  5. SameNameFile 比较两个文件夹是否同名
  6. input的type属性的修改
  7. Centos7安装并配置mysql5.6完美教程
  8. macOS Big Sur无法完成安装 Big Sur为什么安装不了?
  9. Hibernate之一对多与多对一映射
  10. 阶段3 3.SpringMVC·_07.SSM整合案例_06.ssm整合之编写MyBatis框架
  11. 【基于深度学习的人机对弈机器人——视觉识别】
  12. python简易网络验证(零成本)
  13. zblog html代码,简单快速修改zblog模板的重要代码
  14. CentOS8 多网卡BondingTeam
  15. element-ui表格的滚动条样式修改(当固定table表格高度时默认滚动条样式太丑)
  16. mysql的用户名迁移SCHEMA_数据库实时转移之Confluent环境搭建(二)
  17. MarkdownPad安装及基本配置
  18. 桌面上计算机图标移动变成复制,电脑桌面图标都变成lnk后缀怎么办
  19. Java学习——JDBC之从导Jar包到封装
  20. SzNOI语法百题之1-10

热门文章

  1. Docker更改镜像源
  2. php获得客户端ip地址范例
  3. 遗传算法(Genetic Algorithm)之deap学习笔记(一): 基础概念
  4. P4使用Ubuntu中安装教程
  5. 用C语言将整数翻译为英文,C语言实现翻译功能
  6. Java 调用Python+Opencv实现图片定位
  7. 用虚拟机搭建web服务器模拟学习项目发布
  8. 一键复制粘贴工具使用教程
  9. ThinkPHP5/PHP 使用TCPDF 生成PDF文件
  10. java年轻代和年老代默认比值_JAVA中的GC以及年轻代,年老代,持久代的认识