首页 > MySQL > MySQL 入门教程 > 28 聚合函数 MIN、MAX

聚合函数 MIN、MAX

MySQL 的常见的聚合函数有 AVG、COUNT、SUM、MIN、MAX,上一小节介绍了 AVG、COUNT、SUM 三种聚合函数,本小节介绍如何使用 MIN、MAX 两种聚合函数,另外再介绍一下如何在 GROUP BY 中使用聚合函数。

1.MIN函数取最小值

以 teacher 表为例,先查所有 teacher 信息:

SELECT * FROM teacher;

查询结果如下图:

图片描述

可以使用 MIN() 函数对结果集取年龄最小值的数据:

SELECT MIN(age) FROM teacher;

执行结果如下图:

图片描述

Tips :如上图所示,MIN(age) 表示对结果集 age 列取最小值 29。

2.MAX函数取最大值

以 student 表为例,先查看所有 student 信息:

 SELECT * FROM student;

查询结果如下图:

图片描述

可以使用 MAX() 函数对结果集取年龄最大值的数据:

SELECT MAX(age) FROM student;

执行结果如下图:

图片描述

Tips :如上图所示,MAX(age) 表示对结果集 age 列取最大值 23。

3.GROUP BY HAVING

以 student_course、course、student 表内连接查询为例:

SELECT * 
FROM 
student_course a 
INNER JOIN 
student b 
ON a.student_id=b.id 
INNER JOIN course c 
ON a.course_id=c.id;

查询结果如下图:

图片描述

使用 AVG 函数取分组数据平均年龄:

SELECT a.course_id,c.course_name,AVG(age) 
FROM 
student_course a 
INNER JOIN 
student b 
ON a.student_id=b.id 
INNER JOIN course c 
ON a.course_id=c.id
GROUP BY a.course_id,c.course_name;

执行结果如下图 :

图片描述

可以使用 HAVING 对上述结果筛选,例如选出选课学生平均年龄大于 20 的课程数据:

SELECT a.course_id,c.course_name,AVG(age) 
FROM 
student_course a 
INNER JOIN 
student b 
ON a.student_id=b.id 
INNER JOIN course c 
ON a.course_id=c.id
GROUP BY a.course_id,c.course_name
HAVING AVG(age) >= 20;

执行结果如下图:

图片描述

Tips :如上图所示,演示的是使用 AVG() 函数对分组数据进行筛选,同理,可以分别使用 COUNT()、MIN()、MAX()、SUM() 这四种聚合函数取出分组的数据,并且都可以使用 HAVING 后面的条件对分组聚合函数的值进行筛选。

4. 小结

本小节介绍了如何使用 MIN、MAX 两种聚合函数对查询结果集进行筛选,还介绍了如何在 GROUP BY中分组使用聚合函数,并且使用 HAVING 后面的条件对分组数据进行筛选,需要注意的是聚合函数产生的数据列最好重命名,这是因为后端程序语言在处理这些数据时需要规范的字段名,例如:

SELECT AVG(age) AS teacher_avg_age FROM teacher;

查询结果如下图:

图片描述

本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈