Problema:
Vuoi calcolare la media dei numeri memorizzati in una colonna.
Esempio:
Il nostro database ha una tabella denominata sale
con i dati nelle seguenti colonne:id
, city
, year
e amount
.
id | città | importo | |
---|---|---|---|
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 | 89000.40 |
7 | Annandale | 2018 | 21005.77 |
8 | Chicago | 2016 | 2300.89 |
Calcoliamo le vendite medie, indipendentemente dalla città o dall'anno.
Soluzione:
SELECT AVG(amount) as avg_amount FROM sale;
Ecco il risultato:
importo_media |
---|
19073.125000 |
Discussione:
Se desideri calcolare la media dei valori numerici memorizzati in una colonna, puoi farlo utilizzando il AVG()
funzione aggregata; prende come argomento il nome della colonna di cui si vuole calcolare la media. Se non hai specificato altre colonne in SELECT
clausola, verrà calcolata la media per tutti i record nella tabella.
Naturalmente, poiché è una funzione aggregata, AVG()
può essere utilizzato anche con i gruppi. Ad esempio, se desideriamo trovare la vendita media per città, possiamo scrivere questa query:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
La media è calcolata per ogni città:
città | importo |
---|---|
Los Angeles | 7400.850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
Inoltre, se la media deve essere arrotondata, puoi passare il risultato di AVG()
funzione in ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;