Voltar para a lista de artigos Artigos
6 minutos de leitura

SQL SUM() Função Explicada com 5 Exemplos Práticos

Funções agregadas são uma parte importante do conhecimento de SQL - e não há melhor lugar para começar a aprendê-las do que com a função SUM(). Neste artigo, você pode expandir ou atualizar seu SQL com 5 exemplos práticos de SUM().

SQL nos permite fazer mais do que selecionar valores ou expressões de tabelas. A maioria das operações em bancos de dados relacionais utilizam funções agregadas como SUM() para fazer cálculos sobre dados.

Funções agregadas permitem que você calcule várias estatísticas para um grupo de linhas. Você pode encontrar mais informações sobre elas no artigo A Beginner's Guide to SQL Aggregate Functions (Guia para Iniciantes em Funções Agregadas SQL).

A função SUM() resume todos os valores em uma determinada coluna ou os valores retornados por uma expressão (que poderia ser composta de números, valores de coluna ou ambos). É uma boa introdução às funções agregadas do SQL, então vamos mergulhar!

Primeiros passos: Sintaxe da função SUM

Aqui está a sintaxe da função SUM:

SUM([DISTINCT] column_or_expression)

Como você vê, esta função requer apenas um argumento: um nome de coluna ou uma expressão. Os valores fornecidos no argumento são resumidos e devolvidos pela função SUM(). A palavra-chave DISTINCT é opcional; quando utilizada, SUM() adiciona apenas valores não repetitivos. Explicarei mais esta questão na próxima seção.

Primeiro, vamos conhecer os dados sobre os quais construiremos nossas consultas ao SQL SUM().

O product tabela armazena dados que usaremos para calcular a soma de determinados valores. Aqui está uma amostra de seus dados:

idnamepricequantitycategory
1dress1201clothing
2T-shirt552clothing
3jacket6002clothing
4netbook2100NULLIT
5mouse24NULLIT
6bricks681toys
7wood mobile221toys
8teddy bear70NULLtoys

Exemplo 1: Usando SUM() com Uma Coluna

Se você quiser somar valores armazenados em uma coluna, use SUM() com o nome dessa coluna como argumento. Veja o exemplo abaixo:

SELECT 
  SUM(quantity) AS sum_quantity 
FROM product;

Nesta consulta, utilizamos somente SUM() na declaração SELECT. A função SUM() adiciona todos os valores da coluna quantity e retorna o total como resultado da função. O nome da nova coluna de resultados (ou seja, o alias) é sum_quantity.

Aqui está o resultado:

sum_quantity
7

Como você vê, a soma dos valores na coluna quantity da tabela product é 7. se uma das linhas tem um NULL nesta coluna, SUM() omite esta linha do cálculo. Note que há apenas uma linha no resultado: todas as linhas individuais foram "colapsadas" por SUM() - seus detalhes não estão disponíveis no resultado.

Exemplo 2: Usando SUM() com uma Expressão

A seguir, consideraremos um exemplo que usa uma expressão como o argumento SUM(). Esta é a pergunta:

SELECT 
  SUM(quantity*price) AS total_value 
FROM product;

E o resultado retornado por ela é:

total_value
1520

Neste caso, o argumento na função SUM() é uma expressão que calcula o valor total para cada produto: a quantidade do produto (o valor na coluna quantity) multiplicado por seu preço (o valor na coluna preço). Os valores totais calculados para cada produto são somados e o total geral de seus valores é devolvido; o total_sum é 1520, como você pode ver no resultado.

Exemplo 3: Usando SUM() com GROUP BY

Normalmente, você usa a função SUM com a cláusula GROUP BY. Com GROUP BY, os valores somados são computados para um grupo de linhas. Se você não estiver familiarizado com GROUP BY, sugiro ler Usando GROUP BY em SQL ou Como o SQL GROUP BY funciona? antes de prosseguir com este exemplo.

Na consulta abaixo, você pode ver quantos produtos estão em cada categoria:

SELECT 
  category, 
  SUM(quantity) AS total_quantity 
FROM product
GROUP BY category;

E o resultado retornado por esta consulta é:

categorytotal_quantity
clothing5
ITNULL
toys2

Neste caso, a coluna de categoria está no SELECT porque queremos ver a categoria para a qual a soma é calculada. A seguir está a função SUM(), que resume os valores da quantidade. A adição da cláusula GROUP BY significa que produtos com o mesmo valor na coluna de categoria são colocados em um grupo; a soma é calculada para cada grupo separadamente. Finalmente, lembre-se que a cláusula GROUP BY deve vir sempre após FROM.

Note que para a categoria de TI, a soma calculada é NULL. Isto porque todas as linhas que têm um valor "TI" na coluna de categoria têm um NULL na coluna quantity. A categoria 'brinquedos' tem um produto com um NULL na coluna de quantidade, portanto, os valores restantes nesta categoria são somados.

Naturalmente, você também pode agrupar registros e calcular somas em mais de uma coluna.

Exemplo 4: Usando SUM() com DISTINCT

A função SQL SUM() também pode resumir valores únicos (ou seja, não repetitivos) apenas. Para isso, use a função SUM com a palavra-chave DISTINCT no argumento. Por exemplo, a função SQL :

SELECT 
  category, 
  SUM(DISTINCT quantity) 
FROM product
GROUP BY category;

E o resultado retornado por ela:

categorytotal_quantity
clothing3
ITNULL
toys2

Se você olhar para o banco de dados, verá que há cinco itens de vestuário em estoque:

namequantitycategory
dress1clothing
T-shirt2clothing
jacket2clothing

Entretanto, a consulta retorna um 3 para a quantidade total de roupas em estoque. Por quê? Porque '2' aparece duas vezes na coluna de quantidade para artigos da categoria de vestuário. Quando você usa DISTINCT, quaisquer valores repetidos na coluna são ignorados.

Observe que a palavra-chave DISTINCT vem primeiro no argumento da função, seguida do nome da coluna ou da expressão.

Exemplo 5: Usando SUM() com HAVING

Você pode usar SUM() na cláusula HAVING como parte dos critérios do filtro. Por exemplo, na consulta abaixo só queremos que as linhas com uma certa quantidade acima apareçam no resultado:

SELECT 
  category, 
  SUM(quantity) AS total_quantity 
FROM product
GROUP BY category
HAVING SUM(quantity)>2;

E o resultado:

categorytotal_quantity
clothing5

Apenas uma categoria foi devolvida pela consulta: vestuário. Por quê? Porque a soma da quantidade de produtos deve ser maior que 2 para ser incluída no resultado. A coluna de roupas (com um total_quantity de 5) atende a este critério. As outras categorias não são exibidas porque suas quantidades totais são inferiores a 2.

Quer testar sua SQL SUM() Habilidade funcional?

Neste artigo, você aprendeu como funciona a função SQL SUM(). Você pode usá-la para adicionar todos os valores em uma coluna em todas as linhas de uma tabela, para totalizar os resultados de uma expressão que usa mais de uma coluna e para somar valores para um grupo de linhas. Você também pode usar SUM() dentro da cláusula HAVING para filtrar os dados de acordo com os valores somados.

Você quer saber mais sobre SUM()? O artigo How to Use CASE WHEN with SUM() em SQL explica como usar SUM() com a expressão CASE WHEN. Expanda seus conhecimentos! E se você quiser testar seus conhecimentos em SQL, nosso Curso de Práticas em SQL é uma boa opção.

Continue aprendendo e continue praticando SQL!