导读:本期聚焦于小伙伴创作的《MySQL数据库的聚合函数有哪些?分别有什么作用和使用场景?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《MySQL数据库的聚合函数有哪些?分别有什么作用和使用场景?》有用,将其分享出去将是对创作者最好的鼓励。

MySQL的聚合函数是用于对一组值进行计算并返回单个汇总结果的函数,常和GROUP BY子句配合使用,实现分组统计的需求,也可以单独使用完成全表数据的统计。

MySQL数据库的聚合函数有哪些?分别有什么作用和使用场景?

常用聚合函数及功能说明

1. COUNT() 统计函数

COUNT()用于统计符合条件的行数,支持三种常见用法:

  • COUNT(*):统计所有行数,包括值为NULL的行
  • COUNT(列名):统计指定列非NULL的行数,会忽略该列值为NULL的行
  • COUNT(DISTINCT 列名):统计指定列去重后的非NULL行数

示例代码如下:

-- 统计用户表总条数
SELECT COUNT(*) AS total_user FROM user;

-- 统计有邮箱的用户数量,忽略email为NULL的行
SELECT COUNT(email) AS has_email_user FROM user;

-- 统计去重后的城市数量
SELECT COUNT(DISTINCT city) AS city_count FROM user;

2. SUM() 求和函数

SUM()用于对指定列的数值进行求和,仅处理数值类型的列,会忽略值为NULL的行,如果所有值都是NULL则返回NULL。

示例代码如下:

-- 统计所有订单的总金额
SELECT SUM(order_amount) AS total_amount FROM order_info;

-- 统计2024年1月的订单总金额
SELECT SUM(order_amount) AS jan_amount FROM order_info WHERE order_date >= '2024-01-01' AND order_date < '2024-02-01';

3. AVG() 平均值函数

AVG()用于计算指定列数值的平均值,计算时会忽略NULL值,公式为SUM(列名)/COUNT(列名),如果所有值都是NULL则返回NULL。

示例代码如下:

-- 统计用户的平均年龄
SELECT AVG(age) AS avg_age FROM user;

-- 统计商品的平均价格,保留两位小数
SELECT ROUND(AVG(price), 2) AS avg_price FROM product;

4. MAX() 和 MIN() 最值函数

MAX()返回指定列的最大值,MIN()返回指定列的最小值,支持数值、字符串、日期时间类型的列,会忽略NULL值。

示例代码如下:

-- 查询最高的商品价格和最低的商品价格
SELECT MAX(price) AS max_price, MIN(price) AS min_price FROM product;

-- 查询最新的订单时间和最早的订单时间
SELECT MAX(order_time) AS latest_order, MIN(order_time) AS earliest_order FROM order_info;

聚合函数的使用注意事项

1. 与GROUP BY配合使用

当使用GROUP BY对数据进行分组后,聚合函数会作用于每个分组内的数据,返回每个组对应的汇总结果。

示例代码如下:

-- 统计每个城市的用户数量
SELECT city, COUNT(*) AS user_count FROM user GROUP BY city;

-- 统计每个类别的商品平均价格
SELECT category_id, AVG(price) AS avg_price FROM product GROUP BY category_id;

2. WHERE和HAVING的区别

WHERE子句用于在分组前过滤数据,不能使用聚合函数作为过滤条件;HAVING子句用于在分组后过滤数据,可以使用聚合函数作为过滤条件。

示例代码如下:

-- 先过滤出年龄大于等于18的用户,再统计每个城市的成年用户数量
SELECT city, COUNT(*) AS adult_user_count FROM user WHERE age >= 18 GROUP BY city;

-- 统计用户数量超过100的城市
SELECT city, COUNT(*) AS user_count FROM user GROUP BY city HAVING COUNT(*) > 100;

3. 处理NULL值的特性

除了COUNT(*)之外,其他聚合函数都会忽略NULL值,在编写统计逻辑时需要注意这一点,避免出现统计结果不符合预期的情况。

比如某列有3行数据,值分别为10、20、NULL,那么SUM(列名)的结果是30,AVG(列名)的结果是15,而不是10。

常见使用场景总结

聚合函数适用场景
COUNT()统计行数、去重统计、判断数据是否存在
SUM()计算总金额、总数量、累计值
AVG()计算平均值、平均得分、平均耗时
MAX()/MIN()查询极值、最新/最早时间、最高/最低价格

MySQL聚合函数统计函数SQL查询修改时间:2026-06-19 11:18:17

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。