Você está na página 1de 7

CÁLCULOS E FUNÇÕES - SQL

Podemos fazer cálculos quando realizamos buscas no banco de dados.

Exemplo:

SELECT codigo_nome, nome_cd, preco_venda, preco_venda*1.05


FROM cd;

Os operadores aritméticos utilizados no SQL:


OPERADOR AÇÃO
+ Somar
- Subtrair
* Multiplicar
/ Dividir

FUNÇÕES DE AGREGAÇÃO

Uma função de agregação processa um conjunto de valores contidos em uma única coluna
de uma tabela e retorna um único valor como resultado. Sua sintaxe é semelhante a aquela
encontrada em muitas linguagens de programação. Contudo, o parâmetro informado é sempre a
coluna cujos valores desejamos processar.

Existem diversas funções de grupo que são implementadas pelo padrão SQL:
FUNÇÃO DESCRIÇÃO
COUNT() Retorna o numero de linhas afetadas
SUM() Retorna o somatório
AVG() Retorna a média aritmética
MIN() Retorna o menor valor
MAX() Retorna o maior valor

Exemplo count: SELECT COUNT (*)


FROM gravadora;

SELECT COUNT (endereco)


FROM gravadora;

SELECT COUNT (*)


FROM musica_autor;

Exemplos sum: SELECT SUM (preco_venda)


FROM cd;
SELECT SUM (preco_venda) * 1.2
FROM cd;

Exemplos avg: SELECT AVG (preco_venda)


FROM cd;

SELECT AVG (quantidade)


FROM cd;

Exemplo min: SELECT MIN (preco_venda)


FROM cd;

SELECT MIN (data_lancamento)


FROM cd;

Exemplo max: SELECT MAX (preco_venda)


FROM cd;

SELECT MAX (data_lancamento)


FROM cd;

FUNÇÃO DE AGRUPAMENTO

As funções de agregação, em SQL, podem ser utilizadas com a instrução GROUP BY para
agruparmos seus resultados.

O GROUP BY é utilizado em conjunto com as funções de agregação para agrupar seu


resultado por uma ou mais colunas, ou seja, ao utilizar a cláusula GROUP BY dividimos os
registros que serão agregados em grupos de valores. Essa mudança faz com que tenhamos mais
de uma linha como resultado, pois o processamento será realizado uma vez sobre cada um
desses grupos.

Sintaxe:

SELECT nome_coluna, funcao_de_agregacao(nome_coluna)


FROM tabela
GROUP BY nome_coluna;

Exemplo:

ENTIDADE: COMPRA
CODIGO CLIENTE VALOR DATA_COMPRA
1 Camila 245.24 2020/05/10
2 Pedro 137.56 2020/05/25
3 Camila 89.39 2020/05/29
4 Pedro 189.30 2020/06/02
5 Pedro 259.60 2020/06/06
6 João 219.86 2020/06/07

Agora, queremos a soma das compras (coluna VALOR) de cada cliente.

Devemos utilizar o GROUP BY para agrupar os clientes.

Utilizaremos, então, a seguinte instrução:


SELECT cliente, SUM(valor)
FROM compra
GROUP BY cliente;

O resultado para a instrução acima, será:


CLIENTE SUM(VALOR)
Camila 334.63
Pedro 586.46
João 219.86

Percebemos então que o GROUP BY deve ser utilizado sempre que queremos utilizar uma
função de agregação para trazer um valor (no exemplo, a coluna valor) com alguma outra coluna
onde não efetuamos nenhuma operação (no exemplo, a coluna cliente).

Portanto, o GROUP BY permite que você pegue seu conjunto de resultados, agrupe-o em
grupos lógicos e, em seguida, execute consultas agregadas nesses grupos. Você poderia, por
exemplo, selecionar todos os funcionários, agrupá-los por local de trabalho e calcular o salário
médio de todos os funcionários de cada local de trabalho.

CLÁUSULA HAVING COM GROUP BY

A cláusula HAVING determina uma condição de busca para um grupo ou um conjunto de


registros, definindo critérios para limitar os resultados obtidos a partir do agrupamento de registros.
É importante lembrar que essa cláusula só pode ser usada em parceria com GROUP BY.

A cláusula GROUP BY pode ser empregada, entre outras finalidades, para agrupar os
produtos de acordo com cada tipo existente, portanto, podemos usar a cláusula HAVING em
conjunto com GROUP BY para filtrar os resultados que serão submetidos a agregação. Dentro de
cada um dos grupos, a cláusula HAVING pode ser usada para restringir apenas os registros que
possuem o valor da compra superior a 250 reais, por exemplo.

Obs: O HAVING é diferente do WHERE. O WHERE restringe os resultados obtidos sempre


após o uso da cláusula FROM, ao passo que a cláusula HAVING filtra o retorno do agrupamento.

Para fazermos o filtro conforme especificado acima, devemos usar a seguinte instrução:

SELECT cliente, SUM(valor) AS 'Total a pagar’


FROM compra
GROUP BY Tipo
HAVING SUM(valor)>250;

Você também pode gostar