MariaDB SUM() 函数的基础用法与实例

MariaDB SUM() 函数用来计算一组值的总和。

发布于

MariaDB SUM() 函数用来计算一组值的总和。它通常与 SELECT 语句的 GROUP BY 子句一起使用,以便对不同的值组计算各组的总和。该函数在需要计算总计、汇总统计数据等场合非常有用。

语法

MariaDB SUM() 函数的语法如下:

SUM(expression)

expression 是要计算总和的数值表达式或字段。如果指定的 expression 中包含 NULL 值,则 NULL 值会被忽略掉。

该函数返回 expression 的总和。返回值的数据类型取决于计算过程中使用的值。

实例

计算一个数值字段的总和

DROP TABLE IF EXISTS orders;
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  product VARCHAR(100),
  quantity INT,
  price DECIMAL(10,2)
);

INSERT INTO orders VALUES
  (1, 'Product A', 2, 10.50),
  (2, 'Product B', 3, 7.25),
  (3, 'Product A', 5, 10.50);

SELECT SUM(quantity) AS total_quantity,
       SUM(price * quantity) AS total_revenue
FROM orders;

以下是该语句的输出:

+----------------+---------------+
| total_quantity | total_revenue |
+----------------+---------------+
|             10 |         95.25 |
+----------------+---------------+

本示例计算订单表中所有订单的总数量和总收入。其中 SUM(quantity) 计算了所有订单数量之和,而 SUM(price * quantity) 计算了每个订单收入乘积的总和。

使用 GROUP BY 分组统计

SELECT product, SUM(quantity) AS total_quantity
FROM orders
GROUP BY product;

以下是该语句的输出:

+-----------+----------------+
| product   | total_quantity |
+-----------+----------------+
| Product A |              7 |
| Product B |              3 |
+-----------+----------------+

本示例使用 GROUP BY 子句对订单按产品分组,再使用 SUM(quantity) 计算每种产品的订单总数量。

对 NULL 值的处理

DROP TABLE IF EXISTS scores;
CREATE TABLE scores (
  student VARCHAR(50),
  score INT
);

INSERT INTO scores VALUES
  ('Alice', 85),
  ('Bob', 92),
  ('Charlie', NULL),
  ('David', 78);

SELECT SUM(score) AS total_score
FROM scores;

以下是该语句的输出:

+-------------+
| total_score |
+-------------+
|         255 |
+-------------+

在本示例中,scores 表中 Charlie 的成绩为 NULLSUM() 函数会自动忽略掉 NULL 值,因此总分的计算结果为 85 + 92 + 78 = 255。

配合 HAVING 子句过滤组

SELECT product, SUM(quantity) AS total_quantity
FROM orders
GROUP BY product
HAVING SUM(quantity) > 5;

以下是该语句的输出:

+-----------+----------------+
| product   | total_quantity |
+-----------+----------------+
| Product A |              7 |
+-----------+----------------+

本示例在使用 GROUP BY 分组统计后,再使用 HAVING 子句过滤出订单总数大于 5 的产品组。

相关函数

以下是几个与 MariaDB SUM() 相关的几个函数:

  • MariaDB AVG() 函数用来计算一组值的平均值。
  • MariaDB COUNT() 函数用于统计行数或非 NULL 值的数量。
  • MariaDB MAX() 函数返回一组值中的最大值。
  • MariaDB MIN() 函数返回一组值中的最小值。

结论

MariaDB SUM() 是一个非常常用的聚合函数,用于计算数值字段的总和。无论是计算订单总收入、统计总分数,还是其他需要汇总数据的场景,该函数都可以发挥重要作用。结合 GROUP BY 和其他聚合函数的使用,可以实现更加复杂的统计分析需求。在编写涉及数据统计和计算的查询或存储过程时,熟练掌握 SUM() 函数的用法将会提高开发效率。