No MariaDB, o
AVG()
A função retorna o valor médio da expressão fornecida. O
DISTINCT
A opção pode ser usada para retornar a média dos valores distintos (ou seja, remover duplicatas antes de calcular a média). NULL
valores são ignorados. Dados de amostra
Suponha que temos uma tabela com os seguintes dados:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Resultado:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
Exemplo
Podemos usar a seguinte consulta para obter a média de todos os preços.
SELECT AVG(ProductPrice)
FROM Products;
Resultado:
52.898750
Nesse caso, as informações de preço são armazenadas no
ProductPrice
coluna, e então passamos isso como um argumento para o AVG()
função, que então calculou a média e retornou o resultado. Resultados filtrados
O
AVG()
A função opera nas linhas retornadas pela consulta. Portanto, se você filtrar os resultados, o resultado de AVG()
vai refletir isso. SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultado:
19.680000
Nesse caso, 19,680000 é o preço médio de todos os produtos oferecidos pelo fornecedor especificado.
O DISTINCT
Palavra-chave
Você pode usar o
DISTINCT
palavra-chave com AVG()
para calcular apenas valores distintos. Ou seja, se houver valores duplicados, eles serão tratados como um valor. Exemplo:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Resultado:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
Nesse caso, dois itens compartilham o mesmo preço (a chave de fenda para canhotos e a chave de fenda para destros custam 25,99). Portanto, o
AVG()
função, quando usado com o DISTINCT
palavra-chave, trata ambos os valores como um e calcula seu resultado de acordo. Funções da janela
O
AVG()
pode ser usada em funções de janela. Veja SQL AVG()
para Iniciantes para um exemplo disso.