一、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报错信息
六、总结
|