Database
 sql >> Datenbank >  >> RDS >> Database

So finden Sie den Durchschnitt einer numerischen Spalte in SQL

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;