首页/ 学科题库/ mysql/ MySQL 聚合函数
mysql 实战教程

MySQL 聚合函数

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 配合统计不重复值
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 MySQL LIMIT 限制结果 下一篇 → MySQL GROUP BY 分组