
O que são Funções de Agregação?
No Oracle, funções de agregação são usadas para realizar operações matemáticas e estatísticas em um conjunto de linhas e retornar um único valor. Essas funções são fundamentais para resumir e analisar grandes volumes de dados de maneira eficiente, permitindo extrair informações significativas de um conjunto de registros.
Vantagens de Usar Funções de Agregação
- Análise de Dados: Permite calcular totais, médias, contagens e outras estatísticas de dados, facilitando a análise de grandes conjuntos de informações.
- Eficiência: Executa operações complexas rapidamente, mesmo em grandes volumes de dados, otimizando o tempo de processamento.
- Simplicidade: Simplifica a escrita e execução de consultas SQL para análise e relatórios, tornando o processo de análise mais direto e compreensível.
Principais Funções de Agregação
SUM
A função SUM
calcula a soma total de uma coluna numérica. É amplamente utilizada para obter totais financeiros, quantidades acumuladas e outros dados numéricos agregados. Veja um exemplo:
SELECT SUM(salario) AS total_salarios FROM funcionarios;
Esta consulta retorna a soma de todos os salários na tabela funcionarios
.
TOTAL_SALARIOS |
---|
29750 |
AVG
A função AVG
calcula a média de uma coluna numérica, fornecendo a média aritmética dos valores. Veja um exemplo:
SELECT AVG(salario) AS media_salarios FROM funcionarios;
Esta consulta retorna a média dos salários na tabela funcionarios
.
MEDIA_SALARIOS |
---|
4250 |
COUNT
A função COUNT
conta o número de linhas em um conjunto de resultados, o que é útil para determinar a quantidade de registros. Veja um exemplo:
SELECT COUNT(salario) AS numero_empregados FROM funcionarios;
Esta consulta retorna o número total de funcionários na tabela funcionarios
.
NUMERO_EMPREGADOS |
---|
7 |
Observação: Você pode usar COUNT(DISTINCT coluna)
para contar apenas os valores distintos em uma coluna. Por exemplo, SELECT COUNT(DISTINCT salario) AS numero_salarios_unicos FROM funcionarios;
retornará o número de salários únicos na tabela funcionarios
.
MAX
A função MAX
retorna o valor máximo encontrado em uma coluna. É útil para identificar o maior valor em uma lista, como o maior salário ou o maior valor de venda. Veja um exemplo:
SELECT MAX(salario) AS maior_salario FROM funcionarios;
Esta consulta retorna o maior salário registrado na tabela funcionarios
.
MAIOR_SALARIO |
---|
7800 |
MIN
A função MIN
retorna o valor mínimo encontrado em uma coluna, permitindo identificar o menor valor, como o menor salário ou a menor venda. Veja um exemplo:
SELECT MIN(salario) AS menor_salario FROM funcionarios;
Esta consulta retorna o menor salário registrado na tabela funcionarios
.
MENOR_SALARIO |
---|
1950 |
Observação:
- Desempenho: Em tabelas muito grandes, as funções de agregação podem afetar o desempenho das consultas. Certifique-se de que os índices apropriados estejam em uso para otimizar o tempo de resposta.
- Funções de Agregação e Índices: Em alguns casos, a criação de índices em colunas usadas em funções de agregação pode melhorar a performance da consulta.
Uso de Funções de Agregação com GROUP BY e HAVING
GROUP BY
A cláusula GROUP BY
é usada para agrupar resultados com base em uma ou mais colunas, permitindo aplicar funções de agregação a cada grupo. Veja um exemplo:
SELECT descricao AS cargo, SUM(salario) AS total_salarios FROM funcionarios JOIN cargos ON funcionarios.codigo_cargo = cargos.codigo GROUP BY descricao;
Esta consulta calcula a soma dos salários para cada cargo na tabela funcionarios
, agrupando por descricao
da tabela cargos
.
CARGO | TOTAL_SALARIOS |
---|---|
Administrador de Banco de Dados | 7000 |
Analista de Sistemas | 7800 |
Desenvolvedor | 10000 |
Gerente de Projetos | 1950 |
Engenheiro de Software | 3000 |
Observação: Sempre que uma consulta inclui mais de uma coluna que não está sendo usada em uma função de agregação (como SUM
, AVG
, etc.), essas colunas precisam estar listadas na cláusula GROUP BY
. Caso contrário, a consulta resultará em um erro.
HAVING
A cláusula HAVING
é usada para filtrar os resultados após a aplicação das funções de agregação, permitindo refinar os dados agregados. Veja um exemplo:
SELECT descricao AS cargo, SUM(salario) AS total_salarios FROM funcionarios JOIN cargos ON funcionarios.codigo_cargo = cargos.codigo GROUP BY descricao HAVING SUM(salario) > 6000;
Esta consulta retorna os cargos cuja soma dos salários é maior que 6.000.
CARGO | TOTAL_SALARIOS |
---|---|
Administrador de Banco de Dados | 7000 |
Analista de Sistemas | 7800 |
Desenvolvedor | 10000 |
Uso em Subconsultas
Funções de agregação também podem ser usadas em subconsultas para fornecer dados agregados como parte de uma consulta maior. Isso permite realizar cálculos em um nível de detalhe e usar esses resultados em outra parte da consulta principal. Veja um exemplo:
Suponha que você queira encontrar os funcionários cujo salário está acima da média salarial dos funcionários de seu cargo. Para isso, você pode usar uma subconsulta para calcular a média salarial e, em seguida, usar essa média para filtrar os funcionários.
Passo 1: Primeiro, calculamos a média salarial por cargo.
SELECT codigo_cargo, AVG(salario) AS media_salarial FROM funcionarios GROUP BY codigo_cargo;
Passo 2: Em seguida, usamos essa média salarial para filtrar funcionários que ganham acima da média em sua própria subconsulta.
SELECT nome, salario, codigo_cargo FROM funcionarios WHERE salario > (SELECT AVG(salario) FROM funcionarios WHERE codigo_cargo = funcionarios.codigo_cargo);
NOME | SALARIO | CODIGO_CARGO |
---|---|---|
Carlos Silva | 7800,000 | 1 |
Mariana Costa | 7000,000 | 4 |
Lucas Oliveira | 4500,000 | 2 |
Neste exemplo, a subconsulta (SELECT AVG(salario) FROM funcionarios WHERE codigo_cargo = funcionarios.codigo_cargo)
calcula a média salarial para cada cargo. A consulta principal então retorna os funcionários cujo salário é maior do que essa média salarial calculada.
Observação: O uso de subconsultas pode ser eficiente para consultas complexas, mas é importante verificar o desempenho para garantir que a consulta seja otimizada, especialmente em tabelas grandes.
Considerações Finais
As funções de agregação no Oracle são ferramentas indispensáveis para análise e sumarização de dados. Elas simplificam a execução de cálculos complexos e são essenciais para qualquer trabalho de análise de dados. Para um uso eficaz, considere a combinação de funções de agregação com cláusulas como GROUP BY
e HAVING
, e ajuste a performance com índices quando necessário. Além disso, subconsultas com funções de agregação permitem realizar análises mais complexas e refinadas.
Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo!