一、有表如下

+------+---------+--------+
| name | subject | score |
+------+---------+--------+
| 张三 | 数学 | 80 |
| 张三 | 语文 | 53 |
| 张三 | 英语 | 59 |
| 李四 | 数学 | 55 |
| 李四 | 语文 | 56 |
| 李四 | 英语 | 50 |
| 王五 | 数学 | 100 |
| 王五 | 语文 | 90 |
+------+---------+--------+

只用一个select语句查询:不及格科目大于或等于2科的学生,的平均分(所有科目的平均分)。

要点:

1、要统计每个学生不及格科目的个数。

2、计算平均分。

误解一:使用count统计。count永远是统计的所有行!

正解:用sum统计。先计算所有人的平均分,再筛选。

mysql> select name,avg(score),sum(score < 60) as cnt from student group by name having cnt >= 2;
+------+------------+-----+
| name | avg(score) | cnt |
+------+------------+-----+
| 张三 | 64.0000 | 2 |
| 李四 | 53.6667 | 3 |
+------+------------+-----+
2 rows in set</span>

sum(score < 60) 就是统计 挂科数目。

having 是用于筛选的,这里不用用where。where只能用于存在的列。

二、还是上面的表,查询出每个学生最大分数的科目及分数

mysql> select * from student where score in(select max(score) from student group by name);
+------+---------+-------+
| name | subject | score |
+------+---------+-------+
| 张三 | 数学 | 80 |
| 李四 | 语文 | 56 |
| 王五 | 数学 | 100 |
+------+---------+-------+
3 rows in set

三、

一个班级表(class),其中的属性有:id, class_name

一个学生表(student),其中的属性有:id, student_name, class_id

一个成绩表(score),其中的属性有:id, student_id, course_name, score

通过一条sql语句找出各个班级的各个科目的平均成绩,按从大到小排序。

select a.class_name, c.course_name, avg(c.score) as avg
from class a, student b, score c
where a.id=b.class_id and b.id=c.student_id
group by a.class_name, c.course_name
order by avg desc;

需要注意的地方:

(1)avg() 求完平均值后要用as对求得的平均值列命名。

(2)在where后跟多个条件语句的时候,记得使用and 或者 or来连接。

(3)group by 后跟多个列进行分组时,用逗号分开,其表达的意思是先按第一个属性列中的元素进行分组,在分完组的基础上再根据第二个属性列中的元素进行分组。

(4)desc表示从大到小(降序),asc表示从小到大(升序)。

(5)order by 后要写清楚根据那个属性进行升序或者降序进行排序的。

附加一条不在上面出现的值得注意的点:

(1)order by 后跟多个属性时,用逗号隔开,其表达的意思是先根据第一个属性进行升(降)序进行排序,当第一个属性中有相同的值存在的时候,再对这些相同值对应的数据根据第二个属性进行升(降)序进行排序。

MySQL笔试题搜罗的更多相关文章

  1. mysql笔试题大餐---2、exists加一些查询

    mysql笔试题大餐---2.exists加一些查询 一.总结 一句话总结: 实践:我之前的mysql真的学的太浅了,这种情况下,依据实践(做题)才是唯一能把它学好的方式 1.MySQL中EXISTS ...

  2. mysql笔试题大餐---1、组合查询方式及having

    mysql笔试题大餐---1.组合查询方式及having 一.总结 一句话总结: 实践:我之前的mysql真的学的太浅了,这种情况下,依据实践(做题)才是唯一能把它学好的方式 学的暂时够了,以实践而学 ...

  3. Mysql笔试题(二)

    (1)表名:购物信息购物人      商品名称     数量A            甲          2B            乙          4C            丙       ...

  4. Mysql笔试题

    1.查询Student表中的所有记录的Sname.Ssex和Class列. SELECT Sname,Ssex,Class FROM Students; 2.查询教师所有的单位即不重复的Depart列 ...

  5. PHP笔试题(转载)

    整理了一份PHP高级工程师的笔试题,问题很全面.嗯,基本上这些题都答得不错,那么你应该可以胜任大部分互联网企业的PHP职位了.下面直接上题. 1. 基本知识点 HTTP协议中几个状态码的含义:503, ...

  6. 收藏所用C#技术类面试、笔试题汇总

    技术类面试.笔试题汇总 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补 ...

  7. 嵌入式Linux C笔试题积累(转)

    http://blog.csdn.net/h_armony/article/details/6764811 1.   嵌入式系统中断服务子程序(ISR) 中断是嵌入式系统中重要的组成部分,这导致了很 ...

  8. 整理收藏一份PHP高级工程师的笔试题

    整理了一份PHP高级工程师的笔试题,问题很全面.嗯,基本上这些题都答得不错,那么你应该可以胜任大部分互联网企业的PHP职位了.下面直接上题. 1. 基本知识点 HTTP协议中几个状态码的含义:503, ...

  9. PHP工程师笔试题

    PHP工程师笔试题 提示:请将答案写在另外一张空白纸上,并在30分钟内完成. PHP 请写出include.require.include_once.require_noce的区别. include是 ...

随机推荐

  1. Django URL(路由系统)

    Django URL Django 1.11版本 URLconf官方文档 URL配置(URLconf)就像 Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的 ...

  2. vs2005添加include lib文件目录

    vs2005添加include lib文件目录 http://blog.sina.com.cn/s/blog_79489160010145wb.html 1. 添加编译所需要的 lib 文件 [解决方 ...

  3. [poj3735] Training little cats_矩乘快速幂

    Training little cats poj-3735 题目大意:给你n个数,k个操作,将所有操作重复m次. 注释:三种操作,将第i个盒子+1,交换两个盒子中的个数,将一个盒子清空.$1\le m ...

  4. 洛谷 P2195 HXY造公园

    P2195 HXY造公园 题目描述 现在有一个现成的公园,有n个休息点和m条双向边连接两个休息点.众所周知,HXY是一个SXBK的强迫症患者,所以她打算施展魔法来改造公园并即时了解改造情况.她可以进行 ...

  5. django book chapter 2

    Django’s optional GIS (Geographic Information Systems) support requires Python 2.5 to 2.7. 这里提到了djan ...

  6. portmap 和 rpc程序

    Portmap 是为RPC 程序服务的. 每一个RPC server程序启动的时候要向portmap程序注册.这样portmap程序就知道这些RPC server监听在哪个端口. 而RPC clien ...

  7. 在shell脚本中使用函数的返回值

    #!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 = "1" ] ;then return ...

  8. 阿伦 凯 Alan Kay 面向对象编程思想创始人

    The best way to predict the future is to invent it. 预测未来最好的办法就是创造它.

  9. stl变易算法(三)

    本篇接着前面stl变易算法(一)和stl变易算法(二)继续讲述变易算法. 这里将介绍完余下的变易算法,主要有:填充fill.n次填充fill_n.随机生成元素generate.随机生成n个元素gene ...

  10. Delphi 中控件路径加入不进去解决方法

    使用notepa++打开project中的*.dproj文件,在里面找到相似例如以下的区域 <DCC_UnitSearchPath>T:\BusinessSkinForm1006Sourc ...