28 聚合函数 MIN、MAX
优质
小牛编辑
133浏览
2023-12-01
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;
查询结果如下图: