最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MySQL聚合函数实战:COUNT-SUM-AVG应用场景详解
时间:2026-05-20 09:30:02 编辑:袖梨 来源:一聚教程网
MySQL聚合函数是数据分析的利器,掌握COUNT、SUM、AVG三大核心函数能高效完成各类统计需求。下面通过实际案例详解它们的应用技巧。

本文重点讲解三大聚合函数的典型应用场景:数据计数、数值求和与平均值计算。通过用户表和新增订单表的关联操作,演示实际开发中的常见统计需求。
-- 创建订单表 order(注意order是关键字,用反引号包裹)CREATE TABLE `order` ( order_id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, -- 关联用户表主键 amount DECIMAL(10,2), -- 订单金额(保留2位小数) create_time DATETIME DEFAULT NOW());
-- 插入订单测试数据INSERT INTO `order` (user_id, amount) VALUES (1, 99.90),(1, 199.90),(2, 59.90),(3, 299.90),(4, 159.90),(4, 89.90);
一、COUNT:计数(最常用)
该函数主要用于统计记录数量,根据实际需求可选择三种不同计数方式。
1. COUNT(*)
统计结果包含所有记录,包括NULL值,这是最通用的计数方法。
-- 1. 统计用户总数SELECT COUNT(*) AS user_total FROM user;-- 2. 统计性别为男的用户数SELECT COUNT(*) AS male_total FROM user WHERE gender = 1;-- 3. 统计订单总数SELECT COUNT(*) AS order_total FROM `order`;
2. COUNT(字段名)
仅统计指定字段非NULL值的记录数量。
-- 统计age字段非NULL的用户数(如果有用户age为NULL,会被排除)SELECT COUNT(age) AS age_not_null FROM user;
3. COUNT(DISTINCT 字段名)
计算字段中不重复的非NULL值数量。
-- 统计有订单的不同用户数(一个用户可能有多个订单,只算1次)SELECT COUNT(DISTINCT user_id) AS user_with_order FROM `order`;
COUNT避坑
注意区分使用场景:统计总数用COUNT(*),统计非空字段用COUNT(字段名)。
二、SUM:求和
该函数专门处理数值型字段的累加计算,自动忽略NULL值。
-- 1. 统计所有订单的总金额SELECT SUM(amount) AS total_amount FROM `order`;-- 2. 统计用户id=1的所有订单金额总和SELECT SUM(amount) AS user1_total FROM `order` WHERE user_id = 1;-- 3. 非数值字段求和(返回0,无意义)SELECT SUM(name) AS wrong_sum FROM user;
SUM避坑
仅对数值类型字段使用SUM函数,字符串等非数值类型返回结果无意义。
三、AVG:求平均
计算数值字段的平均值,计算公式为总和除以非NULL记录数。
-- 1. 计算所有用户的平均年龄SELECT AVG(age) AS avg_age FROM user;-- 2. 计算所有订单的平均金额(保留2位小数,用ROUND函数)SELECT ROUND(AVG(amount), 2) AS avg_amount FROM `order`;-- 3. 计算性别为女的用户平均年龄SELECT AVG(age) AS female_avg_age FROM user WHERE gender = 2;
AVG避坑
处理包含NULL值的字段时,建议使用IFNULL函数明确处理方式。
四、聚合查询实战案例
综合应用场景:统计年龄超20岁且有订单用户的各项指标。
SELECT COUNT(DISTINCT u.id) AS target_user, -- 符合条件的用户数 ROUND(AVG(u.age), 2) AS avg_age, -- 平均年龄 SUM(o.amount) AS total_order_amount -- 订单总金额FROM user uLEFT JOIN `order` o ON u.id = o.user_id -- 关联用户表和订单表WHERE u.age > 20 AND o.user_id IS NOT NULL; -- 有订单且年龄>20
五、总结
三大聚合函数各有所长:COUNT处理计数需求,SUM专注数值累加,AVG解决平均值计算。掌握它们的特性与适用场景,能大幅提升SQL数据处理效率。
相关文章
- 遮天帝路争锋手游最强阵容图鉴:角色培养与阵容搭配全攻略 05-20
- Primavera-P6项目管理软件安装教程:如何安装Primavera-P6项目管理软件 05-20
- CTF-网络安全竞赛 05-20
- 如何在HTML5中使用Dialog的ShowModal方法创建防穿透模态层 05-20
- hadoop_hbase适合哪些应用场景 05-20
- Debian系统下Dumpcap图形界面操作指南 05-20