MySQL聚合函数和分组过滤

fyh 2022年02月28日 36次浏览
-- 查询表中有多少条记录
SELECT COUNT(studentname) FROM student -- COUNT(字段),会忽略所有null值
SELECT COUNT(*) FROM student -- 本质计算行数,不忽略null,扫所有列
SELECT COUNT(1) FROM student-- 本质计算行数,不忽略null,只扫1列

SELECT SUM('StudentResult') AS 总和 FROM result
SELECT AVG('StudentResult') AS 平均分 FROM result
SELECT MAX('StudentResult') AS 最高分 FROM result
SELECT MIN('StudentResult') AS 最低分 FROM result


-- 查询不同课程的平均分、最高分、最低分,平均分大于80
-- 核心:根据不同的课程分组
SELECT SubjectName, 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

-- 分组后筛选用HAVING 对函数的筛选用HAVING WHERE中不能筛聚合函数