SUM

Nesta documentação de SQL veremos como o SUM pode ser utilizado para retornar a soma de todos os valores de uma coluna numérica, ou mesmo resolver uma expressão.

Apresentaremos aqui como utilizar o SUM no SQL.

SUM: na prática


  SELECT SUM(salario) FROM FUNCIONARIOS
  
Código 1. Select que retorna a soma do salário de todos os funcionários cadastrados na tabela FUNCIONARIOS

Como funciona?

O SUM recebe como parâmetro uma coluna ou uma expressão e retorna um resultado.

Ao passar uma coluna, SUM somará todos os resultados da tabela que forem retornados para a coluna especificada.

Já ao receber uma expressão, SUM resolverá a expressão para cada valor antes de somá-los. Veja em mais detalhes como esses dois processos funcionam nos tópicos a seguir.

SUM recebendo uma coluna

Considere a tabela de produtos da Tabela 1.

id preco
1 20
2 30
3 50

Se quisermos saber a soma do preço de todos os produtos dessa tabela, precisaremos usar a seguinte query:

SELECT SUM(preco) FROM Produtos

O retorno dessa query seria 100,
porque 20 + 30 + 50 = 100.

Ao receber uma coluna como parâmetro, SUM somará todos os valores registrados nessa coluna.

Importante: para que SUM seja utilizado, é importante que a coluna passada por parâmetro seja uma coluna numérica.

SUM recebendo uma expressão

Como vimos anteriormente, SUM também pode receber como parâmetro uma expressão. Considere a mesma tabela de produtos que vimos antes:

id preco
1 20
2 30
3 50

Agora, ao invés de receber apenas a soma de tudo, queremos aplicar 10% de desconto em cada valor. Para isso, faríamos o seguinte:

SELECT SUM (preco - ((preco * 10) / 100)) FROM Produtos

O que será feito é que antes de somar qualquer valor, serão subtraídos os 10% de desconto. Desse modo, o resultado desta query será 90.
porque 20 com 10% de desconto é 18
30 com 10% de desconto é 27
50 com 10% de desconto é 45
Desse modo: 18 + 27 + 45 = 90

Sintaxe

 SUM (coluna)  
 SUM (expressao)  

Exemplos de uso do SUM

Exemplo 1

Sum sendo utilizado para somar uma coluna da tabela carros:

Id Carro Velocidade
1 Ferrari 458 325
2 Porsche 911 Carrera 306
3 BMW 325i 240
SELECT SUM(Velocidade) FROM Carros

Resultado:

Total 871

Exemplo 2

Sum sendo utilizado para calcular uma expressão que retornará a média de velocidade dos três registros da tabela carros:

Id Carro Velocidade
1 Ferrari 458 325
2 Porsche 911 Carrera 306
3 BMW 325i 240
SELECT SUM(Velocidade / 3) FROM Carros

Resultado:

Total 290,333

Exemplo 3

Sum sendo utilizado para mostrar a soma de todas as velocidades cadastradas na tabela carros, agrupadas pelo fabricante:

Id Fabricante Carro Velocidade
1 Ferrari 458 325
2 Porsche 911 Carrera 306
3 BMW 325i 240
4 Ferrari F40 367
5 BMW M3 290
SELECT SUM(Velocidade) FROM Carros GROUP BY Fabricante

Resultado:

BMW 530
Ferrari 692
Porsche 306