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;