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. [Leetcode][第1002题][JAVA][查找常用字符][计数][HashMap]
  2. 在分布式环境中解决session共享问题
  3. Oracle 分页与排序功能的4个查询语句
  4. (46)System Verilog数组查找最大最小值
  5. 程序员加班一周休病假,犯了小错误遭开除,老板怒斥程序员不中用
  6. CDN和CDN加速原理
  7. C# 程序异常关闭时的捕获
  8. 三层架构和mvc的区别_谈谈对于企业级系统架构的理解
  9. swift 图片压缩
  10. 项目管理:如何提高团队效率
  11. android 如何绕过签名校验
  12. linux 内核 禁止抢占,内核抢占实现(preempt)
  13. 群晖Docker部署Microsoft SQL Server 2019
  14. ECMAScript 2017(ES8)新特性简介
  15. MySQL中三种表关系的建立
  16. Linux安装Tomcat详细教程(图文)
  17. Web前端如何进行SEO结构优化
  18. 每周分享第 59 期
  19. thinkphp更新mysql数据库表_ThinkPHP 创建新表、创建数据库讲解
  20. 计算机地图制图算法与原理重点,计算机地图制图原理概述.ppt

热门文章

  1. PHP:安装fileinfo扩展
  2. 力扣-股票的资本损益
  3. 重构改善代码--代码的坏味道
  4. mysql:列类型之时间日期
  5. nian shi ti是什么鬼????
  6. 金融IT的“困”与“道”
  7. J2ME 粒子系统实现(转)
  8. Spring属性注入的三种方式(超详细)
  9. JVM设置对象直接进入年老代
  10. IE8 设置图片大小,没有效果