Função MySQL AVG()

Resumo : neste tutorial, você aprenderá como usar AVG()a função MySQL para calcular o valor médio de um conjunto de valores.

Introdução à função MySQL AVG()

A função MySQL AVG()é uma função agregada que permite calcular o valor médio de um conjunto de valores.

Aqui está a sintaxe da AVG()função:

AVG(DISTINCT expression)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Você usa o DISTINCToperador na AVGfunção para calcular o valor médio dos valores distintos.

Por exemplo, se você tiver um conjunto de valores 1,1,2,3, a AVGfunção com DISTINCToperador retornará 2, ou seja (1 + 2 + 3) / 3,.

Exemplos de funções MySQL AVG()

Usaremos a productstabela do banco de dados de exemplo para a demonstração:

1) Usando a função MySQL AVG() para calcular uma média de todos os valores em um exemplo de coluna

Este exemplo usa a AVG()função para calcular o preço médio de compra de todos os produtos da productstabela:

SELECT 
    AVG(buyprice) 'Average Price'
FROM
    products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Função MySQL AVG - preço médio do produto

2) Usando a função MySQL AVG() com um exemplo de cláusula WHERE

O exemplo a seguir usa a AVG()função para calcular o preço médio de compra dos produtos da linha de produtos Classic Cars:

SELECT 
    AVG(buyprice) 'Average Classic Cars Price'
FROM
    products
WHERE
    productline = 'Classic Cars';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Função MySQL AVG - Preço Médio de Carros Clássicos

Neste exemplo, a WHEREcláusula possui uma condição que inclui apenas a linha de produtos Carros Clássicos. Portanto, a AVG()função calcula o valor médio dos preços de compra de produtos apenas em Carros Clássicos.

3) Exemplo de uso do MySQL AVG com opção DISTINCT

Esta consulta verifica se há algum produto com os mesmos preços:

SELECT 
    COUNT(buyprice) - COUNT(DISTINCT buyprice)
FROM
    products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Função MySQL AVG - função COUNT

Esta consulta utiliza a AVG()função com a DISTINCTopção de calcular a média de preços de compra distintos:

SELECT 
    FORMAT(AVG(DISTINCT buyprice), 2)
FROM
    products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Função MySQL AVG - preços médios de produtos distintos

Observe que o resultado é diferente do preço médio de compra sem usar o DISTINCToperador.

4) MySQL AVG com exemplo de cláusula GROUP BY

A AVG()função é frequentemente usada em conjunto com a GROUP BYcláusula para calcular o valor médio de cada grupo de linhas de uma tabela.

Por exemplo, para calcular o preço médio de compra de produtos para cada linha de produtos, você usa a AVG()função com a GROUP BYcláusula como a seguinte consulta:

SELECT 
    productline, 
    AVG(buyprice) 'Average Price'
FROM
    products
GROUP BY productline;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Função MySQL AVG - preço médio de compra por linha de produto

5) Usando a função MySQL AVG() com um HAVINGexemplo de cláusula

Você pode usar a AVG()função na HAVINGcláusula para definir condições para os valores médios dos grupos.

Por exemplo, se quiser selecionar apenas linhas de produtos que tenham preços médios de compra do produto superiores a 50, você poderá usar a seguinte consulta:

SELECT 
    productline, 
    AVG(buyprice) 'Average Price'
FROM
    products
GROUP BY productline
HAVING AVG(buyprice) > 50;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Função MySQL AVG - com cláusula GROUP BY

6) Usando a função MySQL AVG() com um exemplo de subconsulta

Você pode usar a AVG()função em uma instrução SQL diversas vezes para calcular o valor médio de um conjunto de valores médios.

Esta consulta usa a AVG()função para calcular o preço médio de compra dos preços médios de compra das linhas de produtos:

SELECT 
    AVG(pl_avg) 'Average Product'
FROM
    (SELECT 
        AVG(buyprice) pl_avg
    FROM
        products
    GROUP BY productline) avgs;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Função MySQL AVG - com exemplo de subconsulta

Como funciona.

  • A subconsulta calcula o preço médio de compra por linha de produto.
  • A consulta externa calcula o preço médio de compra dos preços médios de compra das linhas de produtos retornadas da subconsulta.

7) Usando a função MySQL AVG() com NULLexemplo

A AVG()função ignora NULLvalores no cálculo. Veja o exemplo a seguir:

Primeiro, crie uma nova tabela chamada tcom duas colunas ide val. A valcoluna pode conter NULLvalores.

CREATE TABLE IF NOT EXISTS t (
    id INT AUTO_INCREMENT PRIMARY KEY,
    val INT
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, insira algumas linhas na ttabela, incluindo NULLvalor.

INSERT INTO t(val)
VALUES(1),(2),(nulL),(3);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, calcule o valor médio dos valores na valcoluna usando a AVGfunção:

SELECT 
    AVG(val)
FROM
    t;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Função MySQL AVG - exemplo NULL

A instrução retorna 2 conforme esperado porque o NULLvalor não está incluído no cálculo da AVGfunção.

8) Usando a função MySQL AVG() com funções de fluxo de controle

Para calcular o valor médio de uma coluna e calcular o valor médio da mesma coluna condicionalmente em uma única instrução, você usa AVG()função com funções de fluxo de controle , por exemplo, IF , CASE , IFNULLNULLIF .

Por exemplo, para calcular a razão entre o preço médio de compra da Classic Carslinha de produtos e o preço médio de compra de todos os produtos, você usa a seguinte declaração:

SELECT 
    AVG(IF(productline = 'Classic Cars',
        buyprice,
        NULL)) / AVG(buyprice) 'Classic Cars/ Products'
FROM
    products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Função MySQL AVG - com função de fluxo de controle

A IF(productline='Classic Cars',buyprice,NULL)expressão retorna o preço de compra se a linha de produto for Classic Cars, caso contrário  NULL.

Como a AVG()função ignora os NULLvalores no cálculo, a AVG(IF(productline='Classic Cars',buyprice,NULL))expressão retorna o preço médio de compra apenas para produtos cuja linha de produtos é Classic Cars.

Resumo

  • Use a AVG()função para calcular o valor médio de um conjunto de valores.
  • Use a AVG()função com a GROUP BYcláusula para calcular o valor médio de cada grupo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *