Problema:
Você gostaria de calcular a média dos números armazenados em uma coluna.
Exemplo:
Nosso banco de dados tem uma tabela chamada
sale
com dados nas seguintes colunas:id
, city
, year
e amount
. id | cidade | ano | quantidade |
---|---|---|---|
1 | Los Angeles | 2017 | 2345,50 |
2 | Chicago | 2018 | 1345,46 |
3 | Annandale | 2016 | 900,56 |
4 | Annandale | 2017 | 23230.22 |
5 | Los Angeles | 2018 | 12456,20 |
6 | Chicago | 2017 | 89.000,40 |
7 | Annandale | 2018 | 21005.77 |
8 | Chicago | 2016 | 2300,89 |
Vamos calcular a média de vendas, independente da cidade ou ano.
Solução:
SELECT AVG(amount) as avg_amount FROM sale;
Aqui está o resultado:
avg_amount |
---|
19073.125000 |
Discussão:
Se você deseja calcular a média dos valores numéricos armazenados em uma coluna, pode fazê-lo usando o
AVG()
função agregada; ele recebe como argumento o nome da coluna cuja média você deseja calcular. Se você não especificou nenhuma outra coluna no SELECT
cláusula, a média será calculada para todos os registros da tabela. Claro, como é uma função agregada,
AVG()
também pode ser usado com grupos. Por exemplo, se quisermos encontrar a venda média por cidade, podemos escrever esta consulta:SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
A média é calculada para cada cidade:
cidade | quantidade |
---|---|
Los Angeles | 7400,850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
Além disso, se a média tiver que ser arredondada, você pode passar o resultado do
AVG()
função em ROUND()
:SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;