
一、SQL聚合函数
- AVG() - 返回集合的平均值。
- COUNT() - 返回集合中的项目数。
- MAX() - 返回集合中的最大值。
- MIN() - 返回集合中的最小值
- SUM() - 返回集合中所有或不同值的总和。
除COUNT()函数外,SQL聚合函数忽略null值。
这里在mayan:SQL初体验建立的数据库基础之上进行操作
ex:
1.查询课程编号为"0002"的总成绩

2.查询选课学生总数

二、分组
因为聚合函数对一组值进行操作,所以它通常与SELECT语句的GROUP BY子句一起使用。 GROUP BY子句将结果集划分为值分组,聚合函数为每个分组返回单个值。基本语句结构如下:
SELECT c1, aggregate_function(c2)
FROM table
WHERE ...
GROUP BY c1
ex:
1.查询各科成绩最高和最低分

2.查询每门课程被选修学生数

3.查询男生女生人数

三、对分组结果指定条件

ex:
1.查询平均成绩大于60分学生的学号和平均成绩

2.查询至少选修两门课程的学生学号

3.查询同名同姓学生名单并统计同名人数

四、如何用SQL解决业务问题
- 翻译成大白话
- 写出分析思路
- 写出对应SQL语句
ex:如何计算平均成绩大于80的各科成绩
1.如何计算每门课程平均成绩,并且平均成绩大于等于80分
2.

3.

五、对查询结果排序
1.运用函数
降序(从大到小):desc
升序(从小到大):asc
2.示例






3.ex:
3.1.查询及格课程并按课程号从大到小排列

注意:Where 是一个约束声明,使用Where约束来自数据库的数据,Where是在结果返回之前起作用的,Where中不能使用聚合函数。
Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行。而where子句在查询过程中执行优先级高于聚合语句。
HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后对组记录进行筛选。HAVING一般与GROUP BY连用。
3.2查询每门课程的平均成绩,结果按平均成绩升序排序。平均成绩相同时,按课程号降序排列

五、如何看懂SQL报错信息


六、总结
