MySQL 学习笔记 025(聚合函数及分组过滤)
内容来自B站【狂神说Java】MySQL最新教程通俗易懂
聚合函数
| 函数 | 秒速 |
|---|---|
| COUNT() | 计数 |
| SUM() | 求和 |
| AVG() | 平均值 |
| MAX() | 最大值 |
| MIN() | 最小值 |
| ... |
/*
以下三种都能够统计表中的数据,但是有区别
*/
SELECT COUNT(studentName) FROM student; -- COUNT(字段),会忽略所有的null值,如果列是主键,效率比 COUNT(1) 高,如果列不是主键,效率比 COUNT(1) 低
SELECT COUNT(*) FROM student; -- COUNT(*),不会忽略null值,本质计算行数,效率上和 COUNT(1) 基本没有差别
SELECT COUNT(1) FROM student; -- COUNT(1),不会忽略null值,本质计算行数
SELECT SUM(studentResult) AS 总和 FROM result;
SELECT AVG(studentResult) AS 平均分 FROM result;
SELECT MAX(studentResult) AS 最高分 FROM result;
SELECT MIN(studentResult) AS 最低分 FROM result;
分组和过滤
-- 查询不同课程的平均分,最高分,最低分,且平均分大于 100
SELECT subjectName AS 课程, AVG(studentResult) AS 平均分, MAX(studentResult) AS 最高分, MIN(studentResult) AS 最低分
FROM result r
INNER JOIN subject s ON r.SubjectNo = s.SubjectNo
GROUP BY r.SubjectNo
HAVING 平均分 > 100; -- 通过什么字段来分组
浙公网安备 33010602011771号