MySQL SUM() 函数使用指南
MySQL SUM()
函数计算所有指定的非 NULL 值的总和并返回。
SUM()
语法
这里是 MySQL SUM()
函数的语法:
SUM(expr)
我们通常在 SQL 中按如下方式使用 SUM()
函数:
SELECT SUM(expr), ...
FROM table_name
[WHERE ...];
或者按如下方式结合 GROUP BY
子句使用 SUM()
函数:
SELECT SUM(expr), group_expr1, group_expr2, ...
FROM table_name
[WHERE ...]
GROUP BY group_expr1, group_expr2, ...;
参数
expr
expr
一个需要统计数量的表达式。它可以是一个列名,也可以是一个表达式。group_expr1, group_expr2, ...
- 用于分组的表达式或者列名。
返回值
SUM(expr)
函数返回所有指定的非 NULL 值的总和。
如果没有匹配的行,SUM()
函数返回 NULL
。
SUM()
示例
我们将通过 student_score
表进行演示。让我们先创建演示表并插入测试数据。
DROP TABLE IF EXISTS `student_score`;
CREATE TABLE `student_score` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`subject` VARCHAR(255) NOT NULL,
`score` INT
);
INSERT INTO `student_score` (`name`, `subject`, `score`)
VALUES ('Tom', 'Math', 80),
('Tom', 'English', 90),
('Jim', 'Math', 84),
('Jim', 'English', 96),
('Tim', 'Math', NULL),
('Tim', 'English', 98);
以下是表中的数据:
+----+------+---------+-------+
| id | name | subject | score |
+----+------+---------+-------+
| 1 | Tom | Math | 80 |
| 2 | Tom | English | 90 |
| 3 | Jim | Math | 84 |
| 4 | Jim | English | 96 |
| 5 | Tim | Math | NULL |
| 6 | Tim | English | 98 |
+----+------+---------+-------+
SUM()
简单例子
以下 SQL 语句返回 student_score
表中的所有分数的总和。
SELECT SUM(score) from student_score;
+------------+
| SUM(score) |
+------------+
| 448 |
+------------+
SUM()
结合 GROUP BY
让我们使用 SUM()
结合 GROUP BY
来从更多的维度统计总分数。
-
按科目统计总分数
SELECT subject, SUM(score) FROM student_score GROUP BY subject;
+---------+------------+ | subject | SUM(score) | +---------+------------+ | Math | 164 | | English | 284 | +---------+------------+
这里,MySQL 会根据
GROUP BY subject
首先按照subject
将结果集分组,然后在每个组内再执行SUM(score)
。 -
按名称统计总分数
SELECT name, SUM(score) FROM student_score GROUP BY name;
+------+------------+ | name | SUM(score) | +------+------------+ | Tom | 170 | | Jim | 180 | | Tim | 98 | +------+------------+
这里,MySQL 会根据
GROUP BY name
首先按照name
将结果集分组,然后在每个组内再执行SUM(score)
。