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;