mysql如何使用sum求和

来源:这里教程网 时间:2026-02-28 20:11:18 作者:

在 MySQL 中,SUM() 是一个聚合函数,用来对某一列的数值进行求和。它通常用在 SELECT 语句中,配合 GROUP BYWHERE 等子句实现更灵活的数据统计。

基本语法

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。

注意事项

SUM() 只能用于数值类型的列(如 INT、DECIMAL、FLOAT 等) 在使用 GROUP BY 时,SELECT 中非聚合字段一般应出现在 GROUP BY 中 可以用 HAVING 对分组后的结果进一步筛选,例如:HAVING SUM(amount) > 1000 基本上就这些,掌握好 WHERE、GROUP BY 和 SUM 的配合,就能应对大多数求和场景。

相关推荐

热文推荐