Problem:
Du vil gerne beregne gennemsnittet af tal gemt i en kolonne.
Eksempel:
Vores database har en tabel med navnet sale
med data i følgende kolonner:id
, city
, year
og amount
.
id | by | år | beløb |
---|---|---|---|
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 |
Lad os beregne det gennemsnitlige salg, uanset by eller år.
Løsning:
SELECT AVG(amount) as avg_amount FROM sale;
Her er resultatet:
avg_amount |
---|
19073.125000 |
Diskussion:
Hvis du gerne vil beregne gennemsnittet af numeriske værdier gemt i en kolonne, kan du gøre det ved at bruge AVG()
aggregeret funktion; det tager som argument navnet på den kolonne, hvis gennemsnit du vil beregne. Hvis du ikke har angivet andre kolonner i SELECT
klausul, vil gennemsnittet blive beregnet for alle poster i tabellen.
Selvfølgelig, da det er en samlet funktion, AVG()
kan også bruges med grupper. For eksempel, hvis vi gerne vil finde det gennemsnitlige salg pr. by, kan vi skrive denne forespørgsel:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
Gennemsnittet beregnes for hver by:
by | beløb |
---|---|
Los Angeles | 7400,850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
Derudover, hvis gennemsnittet skal afrundes, kan du videregive resultatet af AVG()
funktion ind i ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;