MySQL – Funções de Agregação (MAX, MIN, AVG, COUNT, SUM) – 18

MySQL – Funções de Agregação (MAX, MIN, AVG, COUNT, SUM)

Funções de agregação são funções SQL que permitem executar uma operação aritmética nos valores de uma coluna em todos os registros de uma tabela.

Retornam um valor simples baseado em um conjunto de valores de entrada.

Sintaxe básica:

função(ALL | DISTINCT expressão)

ALL – avalia todos os registros ao agregar o valor da função; é o comportamento padrão.

DISTINCT – Usa apenas valores distintos (sem repetição) ao avaliar a função.

As funções de agregação desconsideram valores NULL (com exceção da função COUNT(*)).

As principais funções de agregação (mais comuns) em MySQL são as seguintes:

  • MIN = Valor Mínimo de um conjunto de valores
  • MAX = Valor Máximo de um conjunto de valores
  • AVG = Média Aritmética de um conjunto de valores
  • SUM = Total (Soma) de um conjunto de valores
  • COUNT = Contar quantidade total de itens

A funções SUM e AVG somente aceitam como entrada um conjunto de números; já as demais funções podem operar também com outros tipos de dados não-numéricos, como por exemplo strings (caracteres) ou datas.

Vamos a alguns exemplos usando o banco de dados db_biblioteca.

Exemplos

1 – Retornar o número total de autores cadastrados na tabela de autores:

SELECT COUNT(*) FROM tbl_autores;

2 – Contar o número de autores que possuem livros cadastrados na tabela de autores, sem repetições

SELECT COUNT(DISTINCT id_autor) FROM tbl_Livro;

3 – Descobrir o preço mais alto dos livros:

SELECT MAX(Preco_Livro) FROM tbl_Livro;

4 – Descobrir a data de publicação do livro mais antigo:

SELECT MIN(Data_Pub) FROM tbl_Livro;

5 – Retornar o preço médio dos livros cadastrados no banco:

SELECT AVG(Preco_Livro) FROM tbl_Livro;

6 – Descobrir o valor total dos livros presentes na tabela de livros:

SELECT SUM(Preco_Livro) FROM tbl_Livro;

É muito comum usar as funções agregadas em conjunto com a cláusula GROUP BY, aplicando-as a grupos de dados específicos.

Assista à explicação sobre os exemplos acima (e outros) no vídeo da Bóson Treinamentos a seguir:

Sobre Fábio dos Reis (1325 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

5 Comentários em MySQL – Funções de Agregação (MAX, MIN, AVG, COUNT, SUM) – 18

  1. Jonas Medeiros Ferreira // 06/02/2015 em 10:57 // Responder

    Olá! Muito legal sua aula. Me deparei com uma dúvida e se pudesse, gostaria de contar com sua ajuda.
    Tenho um cenário quero contar as ocorrências em duas tabelas distintas em um mesmo select. Até o momento, cheguei na seguinte consulta:
    SELECT count(a.id) as qtdea FROM tabelaa as a union
    select count(b.id) as qtdeb from tabelab as b;

    Esta consulta me retorna os valores desejados, porém em uma única coluna.
    A minha dúvida é como reformular esta consulta e forma a ela me retornar os resultados em duas colunas, uma com cada alias correspondente?

  2. Caroline Castro // 05/11/2015 em 15:50 // Responder

    MUITO BOM, VALEU,SERIA BOM SE VC COLOCASSE TAMBÉM CONSULTA DE DUAS OU MAIS TABELAS DISTINTAS

  3. ola, vc é meu mestre dos magos, deixando a babação de lado,
    eu quero saber o seguinte tenho uma tabela assim (odometro inicial, valor 126.963, odometro parcial, valor 126.999, odometro final, valor 127.126.
    como eu teria um resultado e como ficaria a formula da tabela? obrigado
    obs: a formula que eu uso no caderno é assim incerante(final) (-) (inicial) iniciante

  4. Boa tarde amigo, quero lhe agradecer por seu conteúdo didático e esclarecedor. Mas gostaria de uma ajuda sua:
    É possível dar nome a função SUM((c.quantidadeWeb * c.valor_web) + (c.quantidadeCall * c.valor_call)) ?
    Para não ficar chamando esse texto enorme.

1 Trackbacks & Pingbacks

  1. MySQL - GROUP BY - Agrupamento de Registros

Escreva um comentário

Seu e-mail não será divulgado


*