Explorando Funções de Agregação no SQL: SUM, MAX, MIN, AVG
Tags: beginners, programming, sql, database
Published: 2024-01-15 22:20:14

Neste artigo iremos falar sobre algumas funções de agregação do SQL. Essas funções de agregação servem para realizar cálculos em determinados conjuntos de registros da tabela.

Para os exemplos deste artigo, utilizaremos a seguinte tabela como referência.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3i6cx5ziwajovnx52aq.png)

```
CREATE TABLE VENDAS (
                     ID_VENDAS            INT IDENTITY(1, 1) PRIMARY KEY
                    ,ID_PRODUTO           INT
                    ,NOME_PRODUTO         VARCHAR(255)
                    ,PRECO_PRODUTO        DECIMAL(10, 2)
                    ,DATA_VENDA           DATE
                    ,QUANTIDADE_VENDIDA   INT
                    );
```

```
INSERT INTO VENDAS
 (100, 'Chuteira de Futebol', 79.99, '2023-10-01', 5)
,(101, 'Bola de Futebol', 19.99, '2023-10-01', 3)
,(300, 'Raquete de Tênis', 49.99, '2023-10-01', 2)
,(400, 'Bicicleta Mountain Bike', 349.99, '2023-10-03', 1)
,(500, 'Luvas de Boxe', 29.99, '2023-10-04', 2)
,(600, 'Camisa de Basquete', 24.99, '2023-10-04', 6)
,(402, 'Prancha de Surf', 149.99, '2023-10-05', 1)
,(301, 'Raquete de Squash', 39.99, '2023-10-06', 3)
,(900, 'Tênis de Corrida', 69.99, '2023-10-06', 4)
,(401, 'Skate Completo', 59.99, '2023-10-06', 2)
```

**SUM**

A função SUM retorna o somatório de uma coluna numérica do determinado conjunto de registros da tabela.

A sintaxe básica dessa função é a seguinte:

```
SELECT SUM(COLUNA)
  FROM TABELA
```

Vamos ver a seguir um exemplo prático com a nossa tabela de exemplo. Nesse exemplo, estamos pegando a quantidade total das vendas feitas na loja.

```
SELECT SUM(QUANTIDADE_VENDIDA) AS SOMA_QNT_VENDIDA
  FROM VENDAS
```

O retorno que obtemos é:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/omekhwawu8bnuxaztrc1.png)

A função SUM é frequentemente usada em combinação com a cláusula GROUP BY para calcular somas em grupos distintos de registros, permitindo que você analise os dados agregados com base em critérios específicos. Por exemplo, caso queiramos ver a quantidade de itens vendidos em cada dia, fazemos a seguinte sintaxe.

```
SELECT DATA_VENDA, SUM(QUANTIDADE_VENDIDA) AS SOMA_QNT_VENDIDA
  FROM VENDAS
GROUP BY DATA_VENDA
```

O retorno é:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prboty2rx7obpi9p6n7i.png)

**MAX**

A função MAX retorna o valor máximo em uma coluna específica de uma tabela. Ela permite que você obtenha o maior valor presente em uma coluna de dados, que pode ser útil em diversas situações, como encontrar o valor mais alto em uma lista de preços, a maior pontuação em um conjunto de resultados, entre outros.

A sintaxe básica dessa função é a seguinte:

```
SELECT MAX(COLUNA)
  FROM TABELA
```

Um exemplo prático de uso da função MAX, com base em nossa tabela de exemplo, queremos saber qual é o produto mais caro.

```
SELECT MAX(PRECO_PODUTO) AS MAX_PRECO_PRODUTO
  FROM VENDAS
```

O retorno que obtemos é o seguinte:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ioqxrqr0iasj7vqaji01.png)

A função MAX é especialmente útil quando você deseja identificar o valor mais alto em um conjunto de dados ou quando precisa encontrar o registro com o valor máximo em uma coluna específica. Além disso, ela pode ser combinada com outras cláusulas SQL, como WHERE, GROUP BY, para obter resultados mais refinados ou filtrados com base em critérios específicos.

Por exemplo, podemos querer pegar o produto mais vendido em determinado dia. Para isso fazemos o seguinte script.

```
SELECT TOP 1 NOME_PRODUTO, MAX(QUANTIDADE_VENDIDA) AS MAX_QUANTIDADE_VENDIDA
  FROM VENDAS
 WHERE DATA_VENDA = '2023-10-01'
GROUP BY NOME_PRODUTO 
```

O retorno sendo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9dr0x2ph7fm32lv73inn.png)

**MIN**

A função MIN funciona assim como a função MAX, porém ela retorna o menor valor presente em uma coluna de dados.

A sintaxe básica dessa função é a seguinte:

```
SELECT MIN(COLUNA)
  FROM TABELA
```

Um exemplo prático de uso da função MIN, com base em nossa tabela de exemplo, queremos saber qual é o produto mais barato.

```
SELECT MIN(PRECO_PRODUTO) AS MIN_PRECO_PRODUTO
  FROM VENDAS
```

E assim obtemos o retorno:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4jgfl4bs5lx5veips4b3.png)

E também, assim como na função MAX, podemos combinar a função MIN com outras cláusulas do SQL.

Por exemplo, podemos querer pegar o produto menos vendido em determinado dia. Para isso fazemos o seguinte script.

```
SELECT TOP 1 NOME_PRODUTO, MIN(QUANTIDADE_VENDIDA) AS MIN_QUANTIDADE_VENDIDA
  FROM VENDAS
WHERE DATA_VENDA = '2023-10-01'
GROUP BY NOME_PRODUTO
```

Com retorno:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/727464llkww4ktf48bzf.png)

**AVG**

A função AVG é utilizada para calcular a média dos valores de uma coluna numérica específica. O que é útil em situações em que você deseja encontrar a média de dados, como cálculo de médias de preços, pontuações, classificações, e muito mais.

A sintaxe básica da função AVG é a seguinte:

```
SELECT AVG(COLUNA)
  FROM TABELA
```

Utilizando nossa tabela de exemplo, veremos agora um caso que queremos saber a média do preço dos produtos vendidos:

```
SELECT AVG(PRECO_PRODUTO * QUANTIDADE_VENDIDA) MEDIA_PRECO
  FROM VENDAS
```

O retorno sendo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lqmmp2e3sn1dzh3nv3dx.png)

A função AVG é frequentemente usada em combinação com a cláusula GROUP BY para calcular médias em grupos distintos de registros, e a cláusula WHERE para filtrar os dados, permitindo que você analise os dados agregados com base em critérios específicos. Ela é útil para calcular médias de valores numéricos em grandes conjuntos de dados e é uma ferramenta valiosa na análise estatística de informações.
Vamos ver um exemplo onde queremos saber a média de preço vendido por dia.

```
SELECT DATA_VENDA, AVG(PRECO_PRODUTO * QUANTIDADE_VENDIDA) MEDIA_PRECO
  FROM VENDAS
GROUP BY DATA_VENDA
```

O resultado que obtemos é o seguinte:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xe197h1im95ogw83b5v.png)


Em conclusão, as funções de agregação MIN, MAX, SUM e AVG no SQL são recursos fundamentais para realizar cálculos em conjuntos de dados e obter insights valiosos a partir de suas informações armazenadas em bancos de dados. Cada uma dessas funções desempenha um papel distinto na análise de dados e na geração de estatísticas relevantes. Destacam-se os ponto:

1. **MIN (Mínimo)**: A função MIN permite identificar o menor valor em uma coluna numérica, o que é útil para encontrar valores mínimos, como o preço mais baixo de um produto ou a pontuação mais baixa em um conjunto de resultados.
2. **MAX (Máximo)**: A função MAX é usada para encontrar o maior valor em uma coluna numérica, sendo valiosa para identificar valores máximos, como o preço mais alto de um produto ou a pontuação mais alta em uma coleção de dados.
3. **SUM (Soma)**: A função SUM calcula a soma dos valores em uma coluna numérica, permitindo agregar e totalizar informações, como a receita total de vendas ou a quantidade total de produtos vendidos em um período.
4. **AVG (Média)**: A função AVG é empregada para calcular a média dos valores em uma coluna numérica, o que é crucial para avaliar tendências e médias, como a avaliação média de um produto ou a pontuação média de um conjunto de dados.

Dominar o uso dessas funções é fundamental para qualquer profissional que trabalhe com bancos de dados, desenvolvimento de software ou análise de dados, e pode ser uma habilidade crucial na interpretação de informações e na condução de análises significativas em um mundo cada vez mais orientado por dados. Portanto, explorar essas funções e aprofundar seu conhecimento em SQL é um passo importante para aqueles que desejam aproveitar todo o potencial de seus dados.