在 MySQL 中,SUM() 是一个聚合函数,用来对某一列的数值进行求和。它通常用在 SELECT 语句中,配合 GROUP BY、WHERE 等子句实现更灵活的数据统计。
基本语法
SELECT SUM(列名) FROM 表名;例如,有一个订单表 orders,包含字段 amount(订单金额),你想计算所有订单的总金额:
SELECT SUM(amount) AS total_amount FROM orders;这会返回一个结果,total_amount 字段就是所有 amount 的总和。
结合 WHERE 条件筛选求和
如果只想对满足条件的数据求和,可以加 WHERE 子句。
SELECT SUM(amount) AS total_amount FROM orders WHERE status = 'paid';这条语句只计算状态为“已支付”的订单金额总和。
按分组求和(使用 GROUP BY)
当你需要按某个字段分组统计时,比如按用户或按月份统计总金额,使用 GROUP BY。
SELECT user_id, SUM(amount) AS user_total FROM orders GROUP BY user_id;这会返回每个用户的订单金额总和。
也可以按月份统计:
SELECT DATE_FORMAT(order_date, '%Y-%m') AS month, SUM(amount) AS monthly_total FROM orders GROUP BY month ORDER BY month;处理 NULL 值
SUM() 函数会自动忽略 NULL 值。如果某行该列是 NULL,不会影响求和结果。但如果整列都为 NULL,SUM 返回 NULL。
你可以用 IFNULL 避免返回 NULL:
SELECT IFNULL(SUM(amount), 0) AS total_amount FROM orders WHERE 1=0;这样即使没有数据,也会返回 0 而不是 NULL。
