Problema:
Le gustaría calcular el promedio de los números almacenados en una columna.
Ejemplo:
Nuestra base de datos tiene una tabla llamada sale
con datos en las siguientes columnas:id
, city
, year
y amount
.
id | ciudad | año | cantidad |
---|---|---|---|
1 | Los Ángeles | 2017 | 2345,50 |
2 | Chicago | 2018 | 1345,46 |
3 | Annandale | 2016 | 900.56 |
4 | Annandale | 2017 | 23230.22 |
5 | Los Ángeles | 2018 | 12456.20 |
6 | Chicago | 2017 | 89000.40 |
7 | Annandale | 2018 | 21005.77 |
8 | Chicago | 2016 | 2300.89 |
Calculemos las ventas promedio, independientemente de la ciudad o el año.
Solución:
SELECT AVG(amount) as avg_amount FROM sale;
Aquí está el resultado:
avg_amount |
---|
19073.125000 |
Discusión:
Si desea calcular el promedio de los valores numéricos almacenados en una columna, puede hacerlo mediante AVG()
función agregada; toma como argumento el nombre de la columna cuyo promedio se quiere calcular. Si no ha especificado ninguna otra columna en SELECT
cláusula, el promedio se calculará para todos los registros de la tabla.
Por supuesto, dado que es una función agregada, AVG()
También se puede utilizar con grupos. Por ejemplo, si quisiéramos encontrar la venta promedio por ciudad, podemos escribir esta consulta:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
El promedio se calcula para cada ciudad:
ciudad | cantidad |
---|---|
Los Ángeles | 7400.850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
Además, si el promedio debe redondearse, puede pasar el resultado de AVG()
función en ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;