聚合函数
| 函数名称 |
描述 |
| conut |
计数 |
| sum |
求和 |
| avg |
平均值 |
| max |
最大值 |
| min |
最小值 |
- 考题
select count(name) from students; -- count(字段),会忽略所有的null值
select count(*) from students; -- count(*),不会忽略null值,这个是由mysql自己在全字段查找最优列计数
select count(1) from students; -- count(1),不会忽略null值,但是执行效率要高于count(*),因为只是计算那一列的
分组和过滤
- 使用了聚合函数后,后面不能使用where过滤,应该使用having过滤
-- 查询不同课程的平均分,最高分,最低分,平均分大于80
-- 核心:根据不同的课程分组
select `name`,avg(`studentResult`) as 平均分,max(`studentResult`) as 最大值,min(`studentResult`) as 最小值
from `result` r
inner join `subject` sub
on r.`subjectNo`=sub.`subjectNo`
group by r.subjectNo -- 通过什么字段来分组
having 平均分>80
-- group by是分组查询