
The MySQL SUM() function is an aggregate function that allows you to calculate the sum of values passed as an expression to the function.
The syntax of the function is as follows:
SELECT SUM(expression)
The expression is usually a column’s name in your table.
Let’s see the SUM() function in action. Imagine you have a table named example with two columns: quantity and price as shown below.
+----------+-------+
| quantity | price |
+----------+-------+
| 2 | 3.7 |
| 4 | 1.5 |
| 1 | 2 |
| 2 | NULL |
+----------+-------+
You can find the sum of the quantity column values with the following SQL query:
SELECT SUM(quantity) AS sum_quantity
FROM example;
The SELECT statement above will return the sum of the quantity column, which is 9:
+--------------+
| sum_quantity |
+--------------+
| 9 |
+--------------+
You can also use the DISTINCT keyword to sum only the distinct values from the matching rows:
SELECT SUM(DISTINCT(quantity)) AS sum_quantity
FROM example;
-- +--------------+
-- | sum_quantity |
-- +--------------+
-- | 7 |
-- +--------------+
The DISTINCT keyword above causes the duplicate quantity value of 2 to be excluded from the SUM() function.
SUM function ignores NULL values
The SUM() function will return NULL when there’s no row that matches the WHERE clause condition (if you add it)
SELECT SUM(quantity) AS sum_quantity
FROM example
WHERE quantity = 3;
-- returns NULL
The function also ignores NULL value, adding only rows with existing values.
Back to the example table, the price column will add only 3 rows from the 4 available rows:
SELECT SUM(price) AS sum_quantity
FROM example;
-- 3.7 + 1.5 + 2 = 7.2
Finally, you can also perform math operations between columns with number type as the parameter for the SUM() function:
SELECT SUM(quantity*price) AS sum_quantity
FROM example;
-- (2 * 3.7) + (4 * 1.5) + (1 * 2) = 15.4
-- +--------------+
-- | sum_quantity |
-- +--------------+
-- | 15.4 |
-- +--------------+
The fourth row from the table will be ignored because of the NULL value in the price column.
And that’s how the MySQL SUM function works.