Problem:
Sie möchten den Durchschnitt der in einer Spalte gespeicherten Zahlen berechnen.
Beispiel:
Unsere Datenbank hat eine Tabelle namens sale
mit Daten in den folgenden Spalten:id
, city
, year
und amount
.
id | Stadt | Jahr | Betrag |
---|---|---|---|
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 |
Lassen Sie uns den durchschnittlichen Umsatz berechnen, unabhängig von Stadt oder Jahr.
Lösung:
SELECT AVG(amount) as avg_amount FROM sale;
Hier ist das Ergebnis:
avg_amount |
---|
19073.125000 |
Diskussion:
Wenn Sie den Durchschnitt der in einer Spalte gespeicherten numerischen Werte berechnen möchten, können Sie dies mit AVG()
tun Aggregatfunktion; Als Argument wird der Name der Spalte verwendet, deren Durchschnitt Sie berechnen möchten. Wenn Sie keine anderen Spalten in der SELECT
angegeben haben -Klausel wird der Durchschnitt für alle Datensätze in der Tabelle berechnet.
Da es sich natürlich um eine Aggregatfunktion handelt, AVG()
kann auch mit Gruppen verwendet werden. Wenn wir beispielsweise den durchschnittlichen Verkauf pro Stadt ermitteln möchten, können wir diese Abfrage schreiben:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
Der Durchschnitt wird für jede Stadt berechnet:
Stadt | Betrag |
---|---|
Los Angeles | 7400.850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
Wenn der Durchschnitt gerundet werden muss, können Sie außerdem das Ergebnis von AVG()
übergeben Funktion in ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;