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;