26《MySQL 教程》聚合函数(聚合函数 MIN、MAX)

26《MySQL 教程》聚合函数(聚合函数 MIN、MAX),第1张

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

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

查询结果如下图

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

执行结果如下图:

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

查询结果如下图:

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

执行结果如下图:

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

查询结果如下图:

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

执行结果如下图 :

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

执行结果如下图:

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

查询结果如下图:

用:select MAX(id) from table limit 0,1

Mysql中数字类型字段可直接使用MAX()函数,使用max函数查询一个字符串类型的字段时,因为字符串类型大小比较是先比较首字符,然后依次往后进行比较

如有数据:10000,9999。使用max查出来的最大值并不是10000,而是9999

解决方法如下:max(id+0)

扩展资料:

注意事项

MAX()函数

1、MAX()函数是求最大值的函数;

eg:查询张三的所有科目中的最高分

SELECT stuName,MAX(score) FROM t_grade WHERE stuName="张三"

2、与 GOUPE BY 关键字一起使用

eg:查询所有学生分数最高的成绩

SELECT stuName,MAX(score) FROM t_grade GROUP BY stuName

MIN()函数

1、MIN()函数是求最小值的函数;

eg:查询张三的所有科目中的最低分

SELECT stuName,MIN(score) FROM t_grade WHERE stuName="张三"

2、与 GOUPE BY 关键字一起使用;

eg:查询所有学生分数最低的成绩

SELECT stuName,MIN(score) FROM t_grade GROUP BY stuName

MySQL Max() 函数是用来找出记录集中最大值的记录。

要理解 Max() 函数,考虑 employee_tbl 表,它是具有以下记录:

mysql>SELECT * FROM employee_tbl

+------+------+------------+--------------------+

| id | name | work_date | daily_typing_pages |

+------+------+------------+--------------------+

|1 | John | 2007-01-24 |250 |

|2 | Ram | 2007-05-27 |220 |

|3 | Jack | 2007-05-06 |170 |

|3 | Jack | 2007-04-06 |100 |

|4 | Jill | 2007-04-06 |220 |

|5 | Zara | 2007-06-06 |300 |

|5 | Zara | 2007-02-06 |350 |

+------+------+------------+--------------------+

7 rows in set (0.00 sec)

现在,假设想获取上表中daily_typing_pages的字段的最大值对应的记录, 那么可以简单地使用下面的命令:

mysql>SELECT MAX(daily_typing_pages)

->FROM employee_tbl

+-------------------------+

| MAX(daily_typing_pages) |

+-------------------------+

| 350 |

+-------------------------+

1 row in set (0.00 sec)

可以使用GROUP BY子句找到所有记录中最大值对应的名字如下:

mysql>SELECT id, name, MAX(daily_typing_pages)

->FROM employee_tbl GROUP BY name

+------+------+-------------------------+

| id | name | MAX(daily_typing_pages) |

+------+------+-------------------------+

|3 | Jack | 170 |

|4 | Jill | 220 |

|1 | John | 250 |

|2 | Ram | 220 |

|5 | Zara | 350 |

+------+------+-------------------------+

5 rows in set (0.00 sec)

可以使用 Min() 函数和 Max() 函数一起,找出最小值和最大值。试试下面的例子:

mysql>SELECT MIN(daily_typing_pages) least, MAX(daily_typing_pages) max

->FROM employee_tbl

+-------+------+

| least | max |

+-------+------+

| 100 | 350 |

+-------+------+

1 row in set (0.01 sec)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8530430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存