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;