Fala, galera. Tudo bem?
Hoje vou falar um pouco sobre algumas funções de agrupamento de dados, funções essas que são extremamente utilizadas no dia a dia do programador Oracle.
Separei algumas delas, as quais julguei mais importante pra gente falar um pouco.
AVG => Retorna o valor médio de um conjunto de valores
COUNT => Retorna a quantidade de linhas de uma consulta
MAX => Retorna o valor máximo de (X)
MIN => Retorna o valor mínimo de (X)
SUM => Retorna a soma de (X)
Evidencia da tabela que utilizarei no decorrer dos estudos.
AVG
Vamos começar falando da função AVG, essa função retorna o valor médio da coluna selecionada, note que o banco efetua o agrupamento e devolve a média, no caso do exemplo abaixo, eu estou trazendo a média do campo vl_salario, a função efetua a soma de todos os valores e após isso divide pela quantidade de registros.
SELECT AVG(vl_salario) media
FROM funcionarios;
COUNT
Essa função faz a conta da quantidade de registros em uma determinada consulta.
Abaixo segue exemplo da utilização da função p/ verificar a quantidade de registros existentes na tabela.
SELECT COUNT(1)
FROM funcionarios;
MAX e MIN
Como os próprios nomes já sugerem, utilizamos as funções acima p/ retornar um valor máximo, ou mínimo de um conjunto de dados. Abaixo, efetuarei uma consulta p/ retornar o maior/ menor salários
cadastrados na tabela:
SELECT MAX(vl_salario) maior_salr
,MIN(vl_salario) menor_salr
FROM funcionarios
O MIN e o MAX também podem ser utilizados com caracteres, onde o banco fará a busca utilizando o fator de ordem alfabética p/ recuperar o Mínimo e o Máximo. P/ campos de datas, vai considerar a menor(MIN) e a maior como (MAX).
SELECT MAX(dt_contratacao) min_dt
,MIN(dt_contratacao) max_dt
,MIN(nm_func) min_nm
,MAX(nm_func) max_nm
,MIN(nm_departamento) Min_dept
,MAX(nm_departamento) MAX_dept
FROM funcionarios;
SUM
Efetua a somatória de uma determinada coluna, no caso abaixo, estou efetuando a soma da coluna salario, de todos os registros da tabela.
SELECT SUM(vl_salario) soma
FROM funcionarios
A clausula HAVING pode ser utilizada com outras funções de grupo, abaixo mais um exemplo de utilização do GROUP BY + HAVING, agora utilizando a função AVG. No SELECT abaixo, estou trazendo a media salarial dos funcionários contratados no ano, e filtrando apenas as medias maiores do que 5000.
SELECT to_char(dt_contratacao, 'rrrr') ano,
AVG(vl_salario) media
FROM funcionarios
GROUP BY to_char(dt_contratacao, 'rrrr')
HAVING AVG(vl_salario)> 5000