全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-15 6 分钟 ✍️ juanwangdev

MySQL 聚合函数

聚合函数对一组值执行计算,返回单个汇总值,常用于统计分析。

常用聚合函数

函数说明示例
COUNT()计数COUNT(*)
SUM()求和SUM(score)
AVG()平均值AVG(price)
MAX()最大值MAX(score)
MIN()最小值MIN(score)

COUNT 计数

SQL
-- 创建示例表
CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer VARCHAR(50),
    amount DECIMAL(10, 2),
    status VARCHAR(20)
);

INSERT INTO orders VALUES
(1, '张三', 100, 'paid'),
(2, '李四', 200, 'paid'),
(3, '张三', 150, 'pending'),
(4, '王五', NULL, 'paid');

-- 统计所有行数
SELECT COUNT(*) AS 总数 FROM orders;

-- 统计非NULL值数量
SELECT COUNT(customer) AS 客户数 FROM orders;
SELECT COUNT(amount) AS 有金额数 FROM orders;

-- 统计不重复值数量
SELECT COUNT(DISTINCT customer) AS 不同客户数 FROM orders;

SUM 求和

SQL
-- 求和
SELECT SUM(amount) AS 总金额 FROM orders;

-- 条件求和
SELECT SUM(amount) AS 已支付金额
FROM orders WHERE status = 'paid';

-- 表达式求和
SELECT SUM(amount * 1.1) AS 含税总额 FROM orders;

AVG 平均值

SQL
-- 平均值
SELECT AVG(amount) AS 平均金额 FROM orders;

-- 保留小数位数
SELECT ROUND(AVG(amount), 2) AS 平均金额 FROM orders;

-- 条件平均
SELECT AVG(amount) AS 平均金额
FROM orders WHERE status = 'paid';

MAX 和 MIN

SQL
-- 最大值和最小值
SELECT MAX(amount) AS 最大金额, MIN(amount) AS 最小金额
FROM orders;

-- 获取最高金额的订单
SELECT * FROM orders WHERE amount = (SELECT MAX(amount) FROM orders);

组合使用

SQL
-- 一次查询多个统计值
SELECT
    COUNT(*) AS 订单数,
    COUNT(DISTINCT customer) AS 客户数,
    SUM(amount) AS 总金额,
    AVG(amount) AS 平均金额,
    MAX(amount) AS 最大金额,
    MIN(amount) AS 最小金额
FROM orders;

聚合函数忽略 NULL 值,COUNT(*) 除外。

要点总结

  • COUNT(*) 统计所有行,COUNT(列) 统计非NULL值
  • SUM 和 AVG 只适用于数值类型
  • 聚合函数忽略 NULL 值
  • 可与 DISTINCT 配合统计不重复值

📝 发现内容有误?点击此处直接编辑

← 上一篇 MySQL 多表连接查询
下一篇 → MySQL 子查询
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库