Resumo : neste tutorial você aprenderá como usar a SUM()
função MySQL para calcular a soma dos valores em um conjunto.
Introdução à função MySQL SUM()
A SUM()
função é uma função agregada que permite calcular a soma dos valores em um conjunto. A sintaxe da SUM()
função é a seguinte:
SUM(DISTINCT expression)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Veja como SUM()
funciona a função:
- Se você usar a
SUM()
função em umaSELECT
instrução que não retorne nenhuma linha, aSUM()
função retornaráNULL
, e não zero. - A
DISTINCT
opção direciona aSUM()
função para calcular a soma de valores únicos em um conjunto. - A
SUM()
função ignora osNULL
valores no cálculo.
Ilustração da função MySQL SUM()
Primeiro, crie uma nova tabela chamada sum_demo
:
CREATE TABLE sum_demo (
n INT
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A sum_demo
tabela inclui uma coluna chamada n
com o tipo INT
.
Em seguida, insira algumas linhas na sum_demo
tabela:
INSERT INTO sum_demo(n)
VALUES
(1),
(1),
(2),
(NULL),
(3);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, calcule os valores totais na n
coluna usando a SUM()
função:
SELECT
SUM(n)
FROM
sum_demo;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como você pode ver, a SUM()
função calcula o total de 1, 1, 2 e 3. E ignora NULL.
Por fim, calcule o total de valores únicos na n
coluna usando a SUM()
função com a DISTINCT
opção:
SELECT
SUM(DISTINCT n)
FROM
sum_demo;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste caso, a opção SUM()
com DISTINCT
calcula a soma dos valores únicos que são 1, 2 e 3.
Exemplos de funções MySQL SUM()
Usaremos a tabela orderdetails
do banco de dados de exemplo .
1) Exemplo simples de função MySQL SUM()
Este exemplo usa a SUM()
função para obter o número total de itens dos detalhes do pedido:
SELECT
SUM(quantityOrdered) SalesQuantity
FROM
orderdetails;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
2) Função MySQL SUM() com exemplo de expressão
O seguinte mostra os itens de linha do pedido do número do pedido 10110
:
SELECT
orderNumber,
quantityOrdered,
priceEach
FROM
orderdetails
WHERE
orderNumber = 10100;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para calcular o total do número do pedido 10110
, você usa a SUM()
função da seguinte forma:
SELECT
SUM(quantityOrdered * priceEach) orderTotal
FROM
orderdetails
WHERE
orderNumber = 10100;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, a SUM()
função calcula o total da seguinte expressão de todos os itens de linha do pedido com número de pedido 10110:
quantityOrdered * priceEach
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
3) MySQL SUM() com o exemplo da cláusula GROUP BY
A SUM()
função é frequentemente usada com a GROUP BY
cláusula para calcular a soma de cada grupo.
Por exemplo, você pode calcular o valor total de cada pedido usando a SUM()
função com a GROUP BY
cláusula mostrada na consulta a seguir:
SELECT
orderNumber,
SUM(quantityOrdered * priceEach) orderTotal
FROM
orderdetails
GROUP BY
orderNumber
ORDER BY
orderTotal DESC;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo:
- A
GROUP BY
cláusula divide os detalhes do pedido em grupos agrupados pelo número do pedido. - A
SUM()
função calcula o total de cada valor em cada pedido.
4) MySQL SUM() com exemplo de cláusula HAVING
Você pode usar a SUM()
função na HAVING
cláusula para filtrar o grupo. Este exemplo ilustra como selecionar pedidos cujos valores sejam maiores que 60,000
.
SELECT
orderNumber,
SUM(quantityOrdered * priceEach) orderTotal
FROM
orderdetails
GROUP BY
orderNumber
HAVING
SUM(quantityOrdered * priceEach) > 60000
ORDER BY
orderTotal;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
5) MySQL SUM() com exemplo NULL
A SUM()
função retorna NULL
se o conjunto de resultados estiver vazio. Às vezes, você pode querer que a SUM()
função retorne zero em vez de NULL
.
Neste caso, você pode usar a COALESCE()
função. A COALESCE
função aceita dois argumentos e retorna o segundo argumento se o primeiro argumento for NULL
; caso contrário, ele retornará o primeiro argumento.
Veja a seguinte consulta:
SELECT
COALESCE(SUM(quantityOrdered * priceEach), 0) result
FROM
orderdetails
WHERE
productCode = 'S1_20';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
6) MySQL SUM() com exemplo de junção
Veja o seguinte orders
e orderdetails
as tabelas:
Você pode usar a SUM()
função em uma cláusula SELECT
with JOIN
para calcular a soma dos valores em uma tabela com base em uma condição especificada pelos valores em outra tabela.
Esta instrução utiliza a SUM()
função para calcular os valores totais dos pedidos cancelados:
SELECT
SUM(quantityOrdered * priceEach) cancelled_amount
FROM
orderdetails
INNER JOIN orders USING (orderNumber)
WHERE
status = 'Cancelled';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
7) Exemplo MySQL SUM IF
A instrução a seguir usa a SUM()
função para calcular o número de itens vendidos para cada status de pedido:
SELECT
status,
SUM(quantityOrdered)
FROM
orderdetails
INNER JOIN
orders USING (orderNumber)
GROUP BY status;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se quiser girar linhas em colunas, você pode usar a SUM()
função com CASE
expressão. É uma espécie de SUMIF
lógica:
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);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use a
SUM()
função MySQL para calcular a soma dos valores em um conjunto.