28. 聚合函数 MIN、MAX

目录
文章目录隐藏
  1. 1. MIN 函数取最小值
  2. 2. MAX 函数取最大值
  3. 3.GROUP BY HAVING
  4. 4. 小结

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

1. MIN 函数取最小值

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

SELECT * FROM teacher;

查询结果如下图:

聚合函数 MIN、MAX

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

SELECT MIN(age) FROM teacher;

执行结果如下图:

MIN() 函数

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

2. MAX 函数取最大值

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

SELECT * FROM student;

查询结果如下图:

MAX 函数取最大值

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

SELECT MAX(age) FROM student;

执行结果如下图:

MAX 函数取最大值

如上图所示,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;

查询结果如下图:

GROUP BY HAVING

使用 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;

执行结果如下图 :

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

可以使用 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;

执行结果如下图:

使用 HAVING 对上述结果筛选

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

4. 小结

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

SELECT AVG(age) AS teacher_avg_age FROM teacher;

查询结果如下图:

聚合函数 MIN、MAX

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 28. 聚合函数 MIN、MAX

发表回复