Funções agregadas em MySQL

Funções agregadas têm tudo a ver

  • Executando cálculos em várias linhas
  • De uma única coluna de uma tabela
  • E retornando um único valor.

O padrão ISO define cinco (5) funções agregadas, a saber;

1) CONTAGEM
2) SOMA
3) AVG
4) MÍN.
5) MÁX.

Por que usar funções agregadas

Do ponto de vista empresarial, diferentes níveis de organização têm diferentes requisitos de informação. Os gerentes de nível superior geralmente estão interessados ​​em conhecer números inteiros e não precisam de detalhes individuais.

As funções agregadas nos permitem produzir facilmente dados resumidos de nosso banco de dados.

Por exemplo, a partir da nossa base de dados myflix, a gestão pode exigir os seguintes relatórios

  • Filmes menos alugados.
  • Filmes mais alugados.
  • Número médio que cada filme é alugado em um mês.

Produzimos facilmente os relatórios acima usando funções agregadas.

Vejamos as funções agregadas em detalhes.

Função COUNT

A função COUNT retorna o número total de valores no campo especificado. Funciona em tipos de dados numéricos e não numéricos. Todas as funções agregadas, por padrão, excluem valores nulos antes de trabalhar nos dados.

COUNT (*) é uma implementação especial da função COUNT que retorna a contagem de todas as linhas em uma tabela especificada. COUNT (*) também considera Nulos e duplicatas.

A tabela mostrada abaixo mostra dados na tabela de aluguel de filmes

número de referência transação_data data de retorno número de membro id_do_filme filme_ retornou
11 20-06-2012 NULL 1 1 0
12 22-06-2012 25-06-2012 1 2 0
13 22-06-2012 25-06-2012 3 2 0
14 21-06-2012 24-06-2012 2 2 0
15 23-06-2012 NULL 3 3 0

Suponhamos que queremos obter o número de vezes que o filme com id 2 foi alugado

SELECT COUNT(`movie_id`)  FROM `movierentals` WHERE `movie_id` = 2;

Executando a consulta acima em MySQL bancada contra myflixdb nos dá os seguintes resultados.

COUNT('movie_id')
3

Palavra-chave DISTINTA

Palavra-chave DISTINTA

A palavra-chave DISTINCT que nos permite omitir duplicatas de nossos resultados. Isto é conseguido agrupando valores semelhantes.

Para apreciar o conceito de Distinto, vamos executar uma consulta simples

SELECT `movie_id` FROM `movierentals`;

movie_id
1
2
2
2
3

Agora vamos executar a mesma consulta com a palavra-chave distinta-

SELECT DISTINCT `movie_id` FROM `movierentals`;

Conforme mostrado abaixo, distinto omite registros duplicados dos resultados.

movie_id
1
2
3

Função MIN

A função MÍN. retorna o menor valor no campo da tabela especificado.

Como exemplo, suponhamos que queremos saber o ano em que foi lançado o filme mais antigo da nossa biblioteca, podemos usar MySQLfunção MIN para obter as informações desejadas.

A consulta a seguir nos ajuda a conseguir isso

SELECT MIN(`year_released`) FROM `movies`;

Executando a consulta acima em MySQL workbench contra myflixdb nos dá os seguintes resultados.

MIN('year_released')
2005

Função MAX

Tal como o nome sugere, a função MAX é o oposto da função MIN. Isto retorna o maior valor do campo da tabela especificado.

Vamos supor que queremos obter o ano em que o último filme do nosso banco de dados foi lançado. Podemos facilmente usar a função MAX para conseguir isso.

O exemplo a seguir retorna o último ano do filme lançado.

SELECT MAX(`year_released`)  FROM `movies`;

Executando a consulta acima em MySQL workbench usando myflixdb nos dá os seguintes resultados.

MAX('year_released')
2012

Função SUM

Suponha que queiramos um relatório que forneça o valor total dos pagamentos feitos até o momento. Podemos usar o MySQL SOMA função que retorna a soma de todos os valores na coluna especificada. SUM funciona apenas em campos numéricos. Valores nulos são excluídos do resultado retornado.

A tabela a seguir mostra os dados na tabela de pagamentos-

pagamento_id número de membro data de pagamento descrição quantia paga número_de referência_externo
1 1 23-07-2012 Pagamento de aluguel de filme 2500 11
2 1 25-07-2012 Pagamento de aluguel de filme 2000 12
3 3 30-07-2012 Pagamento de aluguel de filme 6000 NULL

A consulta mostrada abaixo obtém todos os pagamentos efetuados e os soma para retornar um único resultado.

SELECT SUM(`amount_paid`) FROM `payments`;

Executando a consulta acima em MySQL workbench contra o myflixdb fornece os seguintes resultados.

SUM('amount_paid')
10500

AVG função

MySQL AVG função retorna a média dos valores em uma coluna especificada. Assim como a função SUM, ela funciona apenas em tipos de dados numéricos.

Suponha que queiramos encontrar o valor médio pago. Podemos usar a seguinte consulta -

SELECT AVG(`amount_paid`)  FROM `payments`;

Executando a consulta acima em MySQL workbench, nos dá os seguintes resultados.

AVG('amount_paid')
3500

Brain Teaser

Você acha que funções agregadas são fáceis. Experimente isso!

O exemplo a seguir agrupa os membros por nome, conta o número total de pagamentos, o valor médio do pagamento e o total geral dos valores dos pagamentos.

SELECT m.`full_names`,COUNT(p.`payment_id`) AS  `paymentscount`,AVG(p.`amount_paid`)  AS `averagepaymentamount`,SUM(p.`amount_paid`)  AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;

Executando o exemplo acima em MySQL workbench nos dá os seguintes resultados.

AVG função

Resumo

  • MySQL suporta todas as cinco (5) funções agregadas do padrão ISO COUNT, SUM, AVG, MÍN e MÁX.
  • SOMA e AVG funções funcionam apenas em dados numéricos.
  • Se desejar excluir valores duplicados dos resultados da função agregada, use a palavra-chave DISTINCT. A palavra-chave ALL inclui até mesmo duplicatas. Se nada for especificado, ALL será assumido como padrão.
  • Funções agregadas podem ser usadas em conjunto com outras cláusulas SQL, como GROUP BY