CodeGym /Cursos /SQL SELF /Somando dados com SUM() — sintaxe e exemplos

Somando dados com SUM() — sintaxe e exemplos

SQL SELF
Nível 7, Lição 2
Disponível

Imagina só... Tu tem uma lista enorme de compras do mercado. Tu quer saber quanto gastou no final das contas. Não vai somar tudo na mão, né? Mas os caixas já têm tudo isso no banco de dados. Por isso tu recebe o cupom com o valor certinho. Provavelmente, em algum lugar do app deles, quem ajuda é a heroína da nossa aula de hoje — a função SUM()! Ela é uma função agregadora que deixa tu somar os valores de uma coluna numérica.

Sintaxe do SUM()

A função SUM() é tão simples quanto o nome, mas bora ver cada parte dela:

SELECT SUM(coluna)
FROM tabela;

A função pega todos os valores da coluna que tu indicar e soma tudo. Mas, já vou avisando: não tem mágica pra somar textos ou datas aqui! Só números mesmo.

Exemplos de uso do SUM()

Bora começar com um exemplo fácil. Vamos usar a tabela salaries, que guarda os salários dos funcionários:

employee_id salary
1 50000
2 60000
3 55000
4 75000

Exemplo 1: Somando todos os salários

Tu quer saber o total da folha de pagamento da empresa. Olha como faz:

SELECT SUM(salary) AS total_salary
FROM salaries;

Resultado:

total_salary
240000

O que rolou aqui? O PostgreSQL somou todos os valores da coluna salary (50000 + 60000 + 55000 + 75000) e devolveu o resultado numa coluna nova chamada total_salary.

Exemplo 2: Somando com condição

Digamos que tu quer saber o total de salário só dos funcionários que ganham mais de 55.000. Bora usar nosso querido operador WHERE:

SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;

Resultado:

high_salary_total
135000

O que rolou aqui? Primeiro o PostgreSQL aplicou o filtro WHERE salary > 55000, deixando só as linhas com salários 60000 e 75000. Depois ele somou esses dois salários (60000 + 75000).

3. Particularidades do SUM()

Como o NULL afeta o SUM()? Como já vimos, NULL é tipo "nada", e o SUM() não conta ele na soma. Olha essa tabela:

employee_id salary
1 50000
2 60000
3 NULL
4 75000

Se a gente quiser saber o total da folha de pagamento:

SELECT SUM(salary) AS total_salary
FROM salaries;

Resultado:

total_salary
185000

Por que "185000" e não "NULL"? O PostgreSQL simplesmente ignora o NULL quando faz a soma.

Exemplos de queries mais avançadas com SUM()

Exemplo 1: Soma e filtro na mesma query

Imagina a tabela sales, que guarda os dados das vendas. Olha a estrutura dela:

product_id amount
1 150
2 200
3 NULL
1 100

Tu quer saber o total de vendas (amount) só pro primeiro produto (product_id = 1):

SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;

Resultado:

total_sales
150

Exemplo 2: Soma e cálculos extras

De novo usando a tabela salaries. Tu quer saber quanto a folha de pagamento passa de 200.000:

SELECT SUM(salary) - 200000 AS surplus
FROM salaries;

Resultado:

surplus
40000

Erros comuns ao usar SUM()

Usar SUM() com dados não numéricos: se tu tentar somar, por exemplo, valores de texto, vai dar erro. Fica ligado e confere o tipo de dado da tua coluna.

Ignorar NULL: muita gente que tá começando esquece do NULL e acha que ele entra na conta. Isso pode dar resultado estranho.

2
Tarefa
SQL SELF, nível 7, lição 2
Bloqueado
Somando todos os elementos da coluna
Somando todos os elementos da coluna
2
Tarefa
SQL SELF, nível 7, lição 2
Bloqueado
Soma condicional
Soma condicional
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION