Problem:
Du vill beräkna genomsnittet av siffror som lagras i en kolumn.
Exempel:
Vår databas har en tabell som heter sale med data i följande kolumner:id , city , year och amount .
| id | stad | år | belopp |
|---|---|---|---|
| 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 |
Låt oss beräkna den genomsnittliga försäljningen, oavsett stad eller år.
Lösning:
SELECT AVG(amount) as avg_amount FROM sale;
Här är resultatet:
| avg_amount |
|---|
| 19073.125000 |
Diskussion:
Om du vill beräkna medelvärdet av numeriska värden lagrade i en kolumn kan du göra det med AVG() aggregerad funktion; det tar som argument namnet på den kolumn vars medelvärde du vill beräkna. Om du inte har angett några andra kolumner i SELECT klausul kommer genomsnittet att beräknas för alla poster i tabellen.
Naturligtvis, eftersom det är en aggregerad funktion, AVG() kan även användas med grupper. Om vi till exempel vill hitta den genomsnittliga försäljningen per stad kan vi skriva den här frågan:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
Genomsnittet beräknas för varje stad:
| stad | belopp |
|---|---|
| Los Angeles | 7400,850000 |
| Chicago | 30882.250000 |
| Annandale | 15045.516667 |
Dessutom, om genomsnittet måste avrundas, kan du skicka resultatet av AVG() funktion till ROUND() :
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;