MySql聚合函数及分组过滤

count(1) 和count(*)的区别:

SELECT COUNT(`borndate`) FROM student; -- count字段,会忽略所有的null值
SELECT COUNT(*) FROM student; -- count(*),不会忽略null值,本质:计算行数,有多少行就返回多少数据,会把所有的列都走一遍
SELECT COUNT(1) FROM student; -- count(*),不会忽略null值,本质:计算行数,只走一列

分组过滤:

1 -- 查询不同课程的平均分,最高分,最低分,平均分大于80
2 -- 核心:(根据不同的课程分组)
3 
4 SELECT subjectname, AVG(studentresult) AS 平均分 ,MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分
5 FROM result r
6 INNER JOIN SUBJECT sub
7 ON r.`subjectno` = sub.`subjectno`
8 GROUP BY r.subjectno  -- 通过什么字段来分组
9 HAVING 平均分>80   -- group by 之后不能用where 只能用having来过滤
原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14761859.html