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;