No MySQL, o
SUM()
A função agregada retorna a soma de uma determinada expressão. Ele também pode ser usado para retornar a soma de todos os valores distintos (exclusivos) em uma expressão.
Sintaxe
A sintaxe fica assim:
SUM([DISTINCT] expr) [over_clause]
Dados de amostra
Suponha que tenhamos uma tabela chamada
Products
com os seguintes dados:SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Resultado:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | NULL | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
Exemplo
Podemos usar a seguinte consulta para obter a soma de todos os preços.
SELECT SUM(ProductPrice)
FROM Products;
Resultado:
389.70
Aqui, as informações de preço são armazenadas no
ProductPrice
coluna, e então passamos isso como um argumento para o SUM()
função, que então calcula a soma e retorna o resultado. Valores nulos
A
SUM()
função ignora quaisquer valores NULL. Em nossa tabela de exemplo acima, a marreta tem um valor NULL em seu ProductPrice
coluna, mas isso foi ignorado no cálculo. Resultados filtrados
A
SUM()
A função opera nas linhas retornadas pela consulta. Portanto, se você filtrar os resultados, a saída de SUM()
vai refletir isso. SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultado:
78.72
Nesse caso, 78,72 é a soma de todos os produtos oferecidos pelo fornecedor especificado.
O DISTINCT
Palavra-chave
Você pode usar o
DISTINCT
palavra-chave com SUM()
para calcular apenas valores distintos. Ou seja, se houver valores duplicados, eles serão tratados como um valor. Exemplo:
SELECT SUM(DISTINCT ProductPrice)
FROM Products;
Resultado:
363.71
Nossa tabela contém dois itens com o mesmo preço (a chave de fenda para canhotos e a chave de fenda para destros custam 25,99). O
DISTINCT
palavra-chave resulta em ambos os valores sendo tratados como um. Funções da janela
Podemos usar um
OVER
cláusula com a SUM()
função para criar uma função de janela. Veja SQL SUM()
para Iniciantes para um exemplo.