Mysql как найти сумму

Summary: in this tutorial, you will learn how to use the MySQL SUM() function to calculate the sum of values in a set.

Introduction to the MySQL SUM() function

The SUM() function is an aggregate function that allows you to calculate the sum of values in a set. The syntax of the SUM() function is as follows:

SUM(DISTINCT expression)Code language: SQL (Structured Query Language) (sql)

Here is how the SUM() function works:

  • If you use the SUM() function in a SELECT statement that returns no row, the SUM() function returns NULL, not zero.
  • The DISTINCT option instructs the SUM() function to calculate the sum of only distinct values in a set.
  • The SUM() function ignores the NULL values in the calculation.

MySQL SUM() function illustration

First, create a new table named sum_demo:

CREATE TABLE sum_demo (
    n INT
);Code language: SQL (Structured Query Language) (sql)

Then, insert some rows into the sum_demo table:

INSERT INTO sum_demo(n) 
VALUES(1),(1),(2),(NULL),(3);
Code language: SQL (Structured Query Language) (sql)

Third, use the SUM() function to calculate the total values in the n column:

SELECT 
    SUM(n)
FROM
    sum_demo;Code language: SQL (Structured Query Language) (sql)

As you can see, the SUM() function calculates the total of 1, 1, 2, and 3. And it ignores NULL.

Finally, use the SUM() with the DISTINCT option to calculate the total values in the n column:

SELECT 
    SUM(DISTINCT n)
FROM
    sum_demo;Code language: SQL (Structured Query Language) (sql)

In this case, the SUM() with the DISTINCT option only calculates the sum of distinct values which are 1, 2 and 3.

MySQL SUM() function examples

Let’s take a look at the table orderdetails in the sample database.

orderdetails table

1) Simple MySQL SUM() function example

This example uses the SUM() function to get the total number of items of the order details:

SELECT 
    SUM(quantityOrdered) SalesQuantity
FROM
    orderdetails;Code language: SQL (Structured Query Language) (sql)

2) MySQL SUM() function with expression example

The following shows the order line items of the order number 10110:

SELECT 
    orderNumber, 
    quantityOrdered, 
    priceEach
FROM
    orderdetails
WHERE
    orderNumber = 10100;Code language: SQL (Structured Query Language) (sql)

To calculate the total for the order number 10110, you use the SUM() function as follows:

SELECT 
	SUM(quantityOrdered * priceEach)  orderTotal
FROM
	orderdetails
WHERE
	orderNumber = 10100;Code language: SQL (Structured Query Language) (sql)

In this tutorial, the SUM() function calculates the total of the following expression of all order line items of the order number 10110:

quantityOrdered * priceEachCode language: SQL (Structured Query Language) (sql)

3) MySQL SUM() with the GROUP BY clause example

The SUM() function is often used with the GROUP BY clause to calculate the sum for each group.

For example, you can calculate the total amount of each order by using the SUM() function with the GROUP BY clause as shown in the following query:

SELECT 
    orderNumber, 
    SUM(quantityOrdered * priceEach) orderTotal
FROM
    orderdetails
GROUP BY 
    orderNumber
ORDER BY 
    orderTotal DESC;Code language: SQL (Structured Query Language) (sql)

In this example:

  • The GROUP BY clause divides order details into groups grouped by the order number.
  • The SUM() function calculates the total of each amount of each order.

4) MySQL SUM() with HAVING clause example

You can use the SUM() function in the HAVING clause to filter the group. This example illustrates how to select orders whose order amounts are greater than 60,000.

SELECT 
    orderNumber, 
    SUM(quantityOrdered * priceEach) orderTotal
FROM
    orderdetails
GROUP BY 
    orderNumber
HAVING 
    SUM(quantityOrdered * priceEach) > 60000
ORDER BY 
    orderTotal;Code language: SQL (Structured Query Language) (sql)

5) MySQL SUM() with NULL example

The SUM() function returns NULL if the result set is empty. Sometimes, you may want the SUM() function to return zero instead of NULL.

In this case, you can use the COALESCE() function. The COALESCE function accepts two arguments and returns the second argument if the first argument is NULL; otherwise, it returns the first argument.

See the following query:

SELECT 
    COALESCE(SUM(quantityOrdered * priceEach), 0) result
FROM
    orderdetails
WHERE
    productCode = 'S1_20';Code language: SQL (Structured Query Language) (sql)

6) MySQL SUM() with join example

See the following orders and orderdetails tables:

MySQL Transaction: orders & orderDetails Tables

You can use the SUM() function in a SELECT with JOIN clause to calculate the sum of values in a table based on a condition specified by the values in another table.

This statement uses the SUM() function to calculate the total amounts of the canceled orders:

SELECT 
    SUM(quantityOrdered * priceEach) cancelled_amount
FROM
    orderdetails
INNER JOIN orders USING (orderNumber)
WHERE 
    status = 'Cancelled';Code language: SQL (Structured Query Language) (sql)

7) MySQL SUM IF example

The following statement uses the SUM() function to calculate the number of items sold for each order status:

SELECT 
    status, 
    SUM(quantityOrdered)
FROM
    orderdetails
        INNER JOIN
    orders USING (orderNumber)
GROUP BY status;
Code language: SQL (Structured Query Language) (sql)

If you want to rotate rows to columns, you can use the SUM() fnction with CASE expression. It is kind of SUMIF logic:

SELECT 
    SUM(CASE
        WHEN status = 'Shipped' THEN quantityOrdered
    END) qty_shipped,
    SUM(CASE
        WHEN status = 'Resolved' THEN quantityOrdered
    END) qty_resolved,
    SUM(CASE
        WHEN status = 'Cancelled' THEN quantityOrdered
    END) qty_cancelled,
    SUM(CASE
        WHEN status = 'On Hold' THEN quantityOrdered
    END) qty_on_hold,
    SUM(CASE
        WHEN status = 'Disputed' THEN quantityOrdered
    END) qty_on_disputed,
    SUM(CASE
        WHEN status = 'In Process' THEN quantityOrdered
    END) qty_in_process
FROM
    orderdetails
        INNER JOIN
    orders USING (orderNumber);
Code language: SQL (Structured Query Language) (sql)

In this tutorial, you have learned how to use the MySQL SUM() function to calculate the sum of a set of values.

Was this tutorial helpful?

В этом учебном пособии вы узнаете, как использовать MySQL функцию SUM с синтаксисом и примерами.

Описание

MySQL функция SUM возвращает суммарное значение выражения.

Синтаксис

Синтаксис MySQL функции SUM:

SELECT SUM(aggregate_expression)
FROM tables
[WHERE conditions];

ИЛИ Синтаксис MySQL функции SUM при группировке результатов по одному или нескольким столбцам:

SELECT expression1, expression2, … expression_n,
SUM(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, … expression_n;

Параметры или аргументы

expression1, expression2, … expression_n – выражения, которые не инкапсулированы в функции SUM и должны быть включены в предложение GROUP BY в конце SQL оператора.

aggregate_expression – это столбец или выражение, которое будет суммироваться.

tables – таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, указанная в предложении FROM.

WHERE conditions – необязательный. Это условия, которые должны быть выполнены для выбранных записей.

Применение

Функция SUM может использоваться в следующих версиях MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0, MySQL 3.23

Пример с одним выражением

Рассмотрим примеры MySQL функции SUM, чтобы понять, как использовать функцию SUM в MySQL.

Например, вам необходимо узнать какая совокупная общая заработная плата всех сотрудников, чья зарплата превышает 20 000 долларов в год.

SELECT SUM(salary) AS “Total Salary”

  FROM employees

WHERE salary > 20000;

В этом примере функции SUM, выражению SUM (salary) присвоили псевдонима «Total Salary». В результате при возврате набора результатов в качестве имени поля будет отображаться «Total Salary».

Пример с использование DISTINCT

Вы можете использовать предложение DISTINCT в функции SUM. Например, приведенная ниже инструкция SQL возвращает комбинированный общий оклад уникальных значений заработной платы, где зарплата выше 20 000 долларов в год.

SELECT SUM(DISTINCT salary) AS “Total Salary”

  FROM employees

WHERE salary > 20000;

Если бы две зарплаты составляли 10 000 долларов в год, в функции SUM использовалось бы только одно из этих значений.

Пример с использованием формулы

Выражение, содержащееся в функции SUM, не обязательно должно быть одним полем. Вы также можете использовать формулу. Например, вы можете рассчитать общую комиссию.

SELECT SUM(sales * 0.05) AS “Total Commission”

  FROM orders;

Пример с использованием GROUP BY

В некоторых случаях вам потребуется использовать предложение GROUP BY с функцией SUM.

Например, вы можете использовать функцию SUM, чтобы вернуть department (название отдела) и общий объем sales (продаж в соответствующем отделе).

SELECT department, SUM(sales) AS “Total sales”

  FROM order_details

GROUP BY department;

Поскольку вы указали один столбец в своем операторе SELECT, который не инкапсулирован в функцию SUM, вы должны использовать предложение GROUP BY. Поэтому поле department должно быть указано в разделе GROUP BY.

Агрегатные функции

Последнее обновление: 21.05.2018

Агрегатные функции вычисляют некоторые скалярные значения в наборе строк. В MySQL есть следующие агрегатные функции:

  • AVG: вычисляет среднее значение

  • SUM: вычисляет сумму значений

  • MIN: вычисляет наименьшее значение

  • MAX: вычисляет наибольшее значение

  • COUNT: вычисляет количество строк в запросе

Все агрегатные функции принимают в качестве параметра выражение, которое представляет критерий для определения значений. Зачастую, в качестве
выражения выступает название столбца, над значениями которого надо проводить вычисления.

Выражения в функциях AVG и SUM должно представлять числовое значение (например, столбец, который хранит числовые значения).
Выражение в функциях MIN, MAX и COUNT может представлять числовое или строковое значение или дату.

Все агрегатные функции за исключением COUNT(*) игнорируют значения NULL.

Avg

Функция Avg возвращает среднее значение на диапазоне значений столбца таблицы.

Например, пусть есть следующая таблица товаров Products:

CREATE TABLE Products
(
    Id INT AUTO_INCREMENT PRIMARY KEY,
    ProductName VARCHAR(30) NOT NULL,
    Manufacturer VARCHAR(20) NOT NULL,
    ProductCount INT DEFAULT 0,
    Price DECIMAL NOT NULL
);
  
INSERT INTO Products(ProductName, Manufacturer, ProductCount, Price) 
VALUES
('iPhone X', 'Apple', 3, 76000),
('iPhone 8', 'Apple', 2, 51000),
('iPhone 7', 'Apple', 5, 32000),
('Galaxy S9', 'Samsung', 2, 56000),
('Galaxy S8', 'Samsung', 1, 46000),
('Honor 10', 'Huawei', 5, 28000),
('Nokia 8', 'HMD Global', 6, 38000)

Найдем среднюю цену товаров из базы данных:

SELECT AVG(Price) AS Average_Price FROM Products

Для поиска среднего значения в качестве выражения в функцию передается столбец Price. Для получаемого значения устанавливается псевдоним Average_Price, хотя
в принципе устанавливать псевдоним необязательно.

Функция avg и поиск среднего значения в MySQL

На этапе выборки можно применять фильтрацию. Например, найдем среднюю цену для товаров определенного производителя:

SELECT AVG(Price) FROM Products
WHERE Manufacturer='Apple'

Также можно находить среднее значение для более сложных выражений. Например, найдем среднюю сумму всех товаров, учитывая их количество:

SELECT AVG(Price * ProductCount) FROM Products

Count

Функция Count вычисляет количество строк в выборке. Есть две формы этой функции. Первая форма COUNT(*) подсчитывает число строк в выборке:

SELECT COUNT(*) FROM Products

Функция count в MySQL и вычисление количества строк

Вторая форма функции вычисляет количество строк по определенному столбцу, при этом строки со значениями NULL игнорируются:

SELECT COUNT(Manufacturer) FROM Products

Min и Max

Функции Min и Max вычисляют минимальное и максимальное значение по столбцу соответственно.
Например, найдем минимальную цену среди товаров:

SELECT MIN(Price), MAX(Price) FROM Products

MIN и MAX в MySQL

Данные функции также игнорируют значения NULL и не учитывают их при подсчете.

Sum

Функция Sum вычисляет сумму значений столбца. Например, подсчитаем общее количество товаров:

SELECT SUM(ProductCount) FROM Products

Также вместо имени столбца может передаваться вычисляемое выражение. Например, найдем общую стоимость всех имеющихся товаров:

SELECT SUM(ProductCount * Price) FROM Products

All и Distinct

По умолчанию все вышеперечисленных пять функций учитывают все строки выборки для вычисления результата. Но выборка может содержать повторяющие значения.
Если необходимо выполнить вычисления только над уникальными значениями, исключив из набора значений повторяющиеся данные, то для
этого применяется оператор DISTINCT.

SELECT COUNT(DISTINCT Manufacturer) FROM Products

По умолчанию вместо DISTINCT применяется оператор ALL, который выбирает все строки:

SELECT COUNT(ALL Manufacturer) FROM Products

В данном случае мы видим, что производители могут повторяться в таблице, так как некоторые товары могут иметь одних и тех же производителей. Поэтому
чтобы подсчитать количество уникальных производителей, необходимо использовать оператор DISTINCT.

Так как этот оператор неявно подразумевается при отсутствии DISTINCT, то его можно не указывать.

Комбинирование функций

Объединим применение нескольких функций:

SELECT COUNT(*) AS ProdCount,
	   SUM(ProductCount) AS TotalCount,
       MIN(Price) AS MinPrice,
       MAX(Price) AS MaxPrice,
       AVG(Price) AS AvgPrice
FROM Products

«MYSQL Последнее обновление 04 апреля 2019 06:33:58 (UTC / GMT +8 часов)

script1adsense2code

script1adsense3code

SUM () функция

Функция MySQL SUM () возвращает сумму выражения. Функция SUM () возвращает NULL, если в возвращаемом наборе нет строк.

Синтаксис:

 SUM ([DISTINCT] expr)

Где expr это выражение.

Ключевое слово DISTINCT может использоваться для суммирования только различных значений expr.

Версия MySQL: 5.6

Содержание:

  • Пример: функция MySQL SUM ()
  • Функция MySQL SUM () с предложением и примером where
  • MySQL SUM () функция, используя несколько столбцов и пример
  • MySQL SUM () функция с функцией COUNT () и переменными и пример
  • MySQL SUM () функция с предложением и примером DISTINCT

Пример: функция MySQL SUM ()

Следующий оператор MySQL возвращает сумму ‘total_cost’ из таблицы покупок.

Пример таблицы: покупка

Код:

SELECT SUM(total_cost)             
FROM purchase;

Пример вывода:

 mysql> SELECT SUM (total_cost)             
    -> С покупки;
+ ----------------- +
| SUM (total_cost) |
+ ----------------- +
| 3590,00 | 
+ ----------------- +
1 ряд в наборе (0,00 сек)

PHP скрипт

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-SUM()- php MySQL examples | w3resource</title>
<meta name="description" content="example-SUM()- php MySQL examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Sum of total costs of purchases:</h2>
<table class='table table-bordered'>
<tr>
<th>Sum of total costs of purchases</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("MySQL:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT SUM(total_cost) 
FROM purchase') as $row) {
echo "<tr>";
echo "<td>" . $row['SUM(total_cost)'] . "</td>";
echo "</tr>"; 
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>

Посмотреть пример в браузере

JSP скрипт

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>example-sum()</title>
</head>
<body>
<%
try {
Class.forName("com.MySQL.jdbc.Driver").newInstance();
String Host ="jdbc:MySQL://localhost:3306/w3resour_bookinfo";
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
connection = DriverManager.getConnection(Host, "root", "datasoft123");
statement = connection.createStatement();
String Data ="SELECT SUM(total_cost) FROM purchase";
rs = statement.executeQuery(Data);
%>
<TABLE border="1">
<tr width="10" bgcolor="#9979">
<td>Sum of total costs of purchases</td>
</tr>
<%
while (rs.next()) {
%>
<TR>
<TD><%=rs.getString("SUM(total_cost)")%></TD>
</TR>
<%   }    %>
</table>
<%
rs.close();
statement.close();
connection.close();
} catch (Exception ex) {
out.println("Can’t connect to database.");
}
%>
</body>
</html>

Пример: функция MySQL SUM () с предложением where

Функция MySQL SUM () с WHERE извлекает сумму заданного выражения, которая фильтруется по условию, помещенному после WHERE. Следующая инструкция MySQL возвращает сумму «total_cost» из таблицы покупок для категории («cate_id»), заданной предложением WHERE.

Пример таблицы: покупка

Код:

SELECT SUM(total_cost) 
FROM purchase          
WHERE cate_id='CA001';

Пример вывода:

 mysql> SELECT SUM (total_cost) 
    -> ОТ покупки          
    -> ГДЕ cate_id = 'CA001';
+ ----------------- +
| SUM (total_cost) |
+ ----------------- +
| 1725,00 | 
+ ----------------- +
1 ряд в наборе (0,00 сек)

PHP скрипт

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-aggregate-functions-and-grouping-sum-with-where- php MySQL examples | w3resource</title>
<meta name="description" content="example-aggregate-functions-and-grouping-sum-with-where- php MySQL examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Sum of total costs of purchases for category id CA001:</h2>
<table class='table table-bordered'>
<tr>
<th>Sum of total costs of purchases for category id CA001</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("MySQL:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT SUM(total_cost) 
FROM purchase
WHERE cate_id="CA001"') as $row) {
echo "<tr>";
echo "<td>" . $row['SUM(total_cost)'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>

Посмотреть пример в браузере

Пример: функция MySQL SUM () с использованием нескольких столбцов

Функция MySQL SUM () извлекает значение суммы выражения, которое состоит из более чем одного столбца. Вышеуказанный оператор MySQL возвращает сумму умножения ‘receive_qty’ и ‘purchase_price’ из таблицы покупок для каждой группы категории (‘cate_id’).

Пример таблицы: покупка

Код:

SELECT cate_id,
SUM(receive_qty*purch_price)
FROM purchase            
GROUP BY cate_id;

Пример вывода:

 mysql> SELECT cate_id,
    -> СУММА (receive_qty * purchase_price)
    -> ОТ покупки            
    -> GROUP BY cate_id;
+ --------- + ------------------------------ +
| cate_id | SUM (receive_qty * purchase_price) |
+ --------- + ------------------------------ +
| CA001 | 1725,00 | 
| CA002 | 965,00 | 
| CA003 | 900,00 | 
+ --------- + ------------------------------ +
3 ряда в наборе (0,02 сек)

PHP скрипт

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-aggregate-functions-and-grouping-sum-using-multiple-columns- php MySQL examples | w3resource</title>
<meta name="description" content="example-aggregate-functions-and-grouping-sum-using-multiple-columns- php MySQL examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Category id and Sum of product of received quantity and purchase price:</h2>
<table class='table table-bordered'>
<tr> 
<th>Category id</th><th>Sum of product of received quantity and purchase price</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password"; 
$db = "your_dbname"; 
$dbh = new PDO("MySQL:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT cate_id,SUM(receive_qty*purch_price) 
FROM purchase
GROUP BY cate_id') as $row) {
echo "<tr>";
echo "<td>" . $row['cate_id'] . "</td>";
echo "<td>" . $row['SUM(receive_qty*purch_price)'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>

Посмотреть пример в браузере

Пример: функция MySQL SUM () с функцией COUNT () и переменными

Следующая инструкция MySQL вернет сумму «mysum», временной переменной, которая подсчитывает количество книг, содержащих более 200 страниц из таблицы «book_mast».

Пример таблицы: book_mast

Код:

SELECT SUM(mysum) 
FROM( 
SELECT COUNT(*) AS  mysum 
FROM book_mast
WHERE no_page>200) AS bb;

Пример вывода:

 mysql> ВЫБЕРИТЕ СУММУ (mysum) 
    -> ОТ ( 
    -> ВЫБЕРИТЕ СЧЕТ (*) AS mysum 
    -> ОТ book_mast
    -> ГДЕ no_page> 200) AS bb;
+ ------------ +
| СУММ (mysum) |
+ ------------ +
| 12 | 
+ ------------ +
1 ряд в наборе (0,02 сек)

PHP скрипт

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-aggregate-functions-and-grouping-sum-with-count-and-variables- php MySQL examples | w3resource</title>
<meta name="description" content="example-aggregate-functions-and-grouping-sum-with-count-and-variables- php MySQL examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Returning the sum of the ‘mysum’ a temporary variable  which is used to count number of books containing more than 200 pages:</h2>
<table class='table table-bordered'>
<tr> 
<th>SUM(mysum)</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("MySQL:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT SUM(mysum) 
FROM( 
SELECT COUNT(*) AS  mysum 
FROM book_mast where no_page>200) AS bb') as $row) {
echo "<tr>";  
echo "<td>" . $row['SUM(mysum)'] . "</td>";  
echo "</tr>";  
}
?> </tbody></table> 
</div> 
</div> 
</div> 
</body>
</html>

Посмотреть пример в браузере

Пример: функция MySQL SUM () с предложением DISTINCT

Функция MySQL SUM () извлекает сумму уникального значения выражения, если оно сопровождается предложением DISTINCT . Следующая инструкция MySQL возвращает сумму количества ветвей (‘no_of_branch’) из таблицы издателей, где, если несколько издателей имеют одинаковое количество ветвей, это число (то есть количество ветвей) берется только один раз.

Пример таблицы: издатель

Код:

SELECT SUM(DISTINCT no_of_branch)          
FROM publisher;

Пример вывода:

 mysql> SELECT SUM (DISTINCT no_of_branch)          
    -> ОТ издателя;
+ ---------------------------- +
| SUM (DISTINCT no_of_branch) |
+ ---------------------------- +
| 64 | 
+ ---------------------------- +
1 ряд в наборе (0,00 сек)

PHP скрипт

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-aggregate-functions-and-grouping-sum-with-distinct- php MySQL examples | w3resource</title>
<meta name="description" content="example-aggregate-functions-and-grouping-sum-with-distinct- php MySQL examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Sum of unique number of branches of publishers:</h2>
<table class='table table-bordered'>
<tr>
<th>Sum of unique number of branches of publishers</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("MySQL:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT SUM(DISTINCT no_of_branch) 
FROM publisher') as $row) {
echo "<tr>";
echo "<td>" . $row['SUM(DISTINCT no_of_branch)'] . "</td>"; 
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>

Посмотреть пример в браузере

Предыдущая: STDDEV ()
Далее: СУММА () с группировкой по

MySQL sum()

Introduction to MySQL sum()

  • MySQL SUM() is a MySQL aggregate function that calculates the sum of provided set of values. The SUM() avoids the NULL values while evaluating the sum of the data values in MySQL.
  • As it is an aggregate function so it implements the sum calculation on multiple values and produces a distinct value.In MySQL, the aggregate functions are normally applied in combination with the GROUP BY clause so that is calculates an aggregate result value for the specific values or group of values mentioned in the query.
  • If we are finding the sum of a specific expression, then it may give NULL value when there exists no rows in the result set.

Syntax

We have the subsequent elementary syntax structure for the MySQL SUM() function:

SUM(Expr_Value)

Or

SUM(DISTINCT Expr_Value)

Here, let us explain the syntax terms:

  • When the SELECT statement is used with SUM() function that outputs no row, then the MySQL SUM() function will return NULL value but not zero.
  • The option DISTINCT keyword is provided to instruct the MySQL SUM() function to evaluate the total of unique values in the set.
  • The MySQL SUM() function disregards the NULL values in the sum calculation in the server.
  • Expr_Value can be any column name of the specific table. It can be one or multiple separated by comma.

How SUM() function works in MySQL?

The MySQL SUM() function is implemented with SELECT statement and  also can be calculated with JOIN clauses.

  • We use the MySQL SUM() function along with WHERE clause also to retrieve the result sum of a particular expression that is clarified against a condition positioned after the clause WHERE. This will be helpful to find the sum total of values from a large set of data in the database.
  • Suppose, if we need to rotate table rows to table columns then, the SUM() function is used together with the MySQL CASE expression which is a type of SUMIF logic illustrated below:

SELECT
SUM(CASE
WHEN expression…
END) ColumnName1,
SUM(CASE
WHEN expression…
END) ColumnName2,…..,
FROM TableName1 INNER JOIN TableName2 USING(ColumnName);

Here, the syntax shows a CASE statements with SUM() function evaluated for table columns done for the respective tables. The tables are also joined with INNER JOIN and applying the USING keyword to specifycolumn name of the table.

Since, the SUM() is an aggregate function so it works on multiple table rows or of a table column to find the sum result to return only a value.

Examples to Implement MySQL sum()

Let us evaluate the MySQL SUM() to show the working of sum with the table columns and rows to get the result total set.

Example #1. Simple Example of MySQL SUM() function

Let us take a table from the database as a demo table to generate the total sum of column table values.

We have a table named Books having some fields defined with columns as BookID, BookName, Language and Price. To view the contents of this Books table let us query the data:

Code #1

SELECT * FROM Books;

Output:

MySQL sum() - 1

We are going to use the aggregate SUM() function to fetch the total price of the books from the table quantity using the query below:

Code #2

SELECT SUM(Price)Total_Price FROM Books;

Output:

MySQL sum() - 2

As shown above, the sum has calculated the sum of total price from the book column.

We can also apply the DISTINCT keyword to find out the unique sum value of unique column values. So, the SUM() function will ignore the duplicate values and NULL values if available in the column values of table.

Code #3

SELECT SUM(DISTINCT Price) Total_Price FROM Books;

Output:

MySQL sum() - 3

It shows the same sum total because the Price column does not contain any duplicates.

Example #2. with expression

Suppose, we have a table named Suppliers:

Code #1

select * from suppliers;

Output:

MySQL sum() - 4

For supplier line items of the supplier id 11we have the following query as:

Code #2

SELECT Category, Unit, CostEach FROM Suppliers WHERE Supplier_ID = 11;

Output:

MySQL sum() - 5

Now, we will calculate the total for a supplier item with Supplier id 11 using MySQL SUM() function:

Code #3

SELECT SUM(Unit * CostEach)TotalCost FROM Suppliers WHERE Supplier_ID = 11;

Output:

MySQL sum() - 6

Example #3. with GROUP BY clause and ORDER BY clause

We will use SUM() function with GROUP BY clause to produce the sum output by grouping the values based on a specific column of the table.For example, using the SUM() we will query the total price of each supplier itemwith GROUP BY clause:

Code #1

SELECT Supplier_ID, SUM(Unit * CostEach) TotalCost FROM Suppliers GROUP BY Supplier_ID ORDER BY TotalCost DESC;

Output:

ORDER BY

Here the result set is grouped by Supplier id and ordered by total cost calculated in descending order.

Example #4. with clause HAVING

The HAVING clause is used with the SUM() function to filter the sum group where the total cost amount is greater than certain provided integer value as follows:

Code #1

SELECT Supplier_ID, SUM(Unit * CostEach) TotalCost FROM Suppliers GROUP BY Supplier_ID
HAVING SUM(Unit * CostEach)>200 ORDER BY TotalCost DESC;

Output:

NULL

Example #5. with NULL

If the result set is empty then the SUM() returns NULL value but you can also show zero instead using the COALESCE() with two arguments:

Code #1

SELECT COALESCE (SUM(Unit * CostEach), 0) Output FROM Suppliers WHERE Supplier_ID = 15;

Output:

NULL

The result is zero because there is no row with supplier id 15 in the table Suppliers.

Example #6. with JOIN clause

We will take two tables Products and Suppliers where:

Products – Code #1

select * from products;

Output:

Products

Suppliers – Code #2

select * from suppliers;

Output:

Suppliers

Calculating sum by SUM() clause with JOIN clause as follows:

Code #3

SELECT SUM(Unit * CostEach) Product_cost FROM Suppliers INNER JOIN Products ON Supplier_ID WHERE Product_Name = 'Maggie';

Output:

MySQL sum() - 12

The result sum value is evaluated on the basis of a condition provided by the values in the next table.

Conclusion

  • The MySQL SUM() is similar to a mathematical sum calculation that finds out the totality of provided table values in database.
  • The aggregate SUM() function is useful to get the summarized data result set of integer data type values especially for those column values of tables containing any product records or eCommerce or business related database.

Recommended Articles

This is a guide to MySQL sum(). Here we discuss an introduction to MySQL sum(), syntax, parameters, how does it work with query examples. You can also go through our other related articles to learn more –

  1. MySQL GROUP_CONCAT()
  2. MySQL ON DELETE CASCADE
  3. MySQL REINDEX
  4. MySQL LAG()

Добавить комментарий