Problem:
Chcesz obliczyć średnią liczb przechowywanych w kolumnie.
Przykład:
Nasza baza danych zawiera tabelę o nazwie sale
z danymi w następujących kolumnach:id
, city
, year
i amount
.
id | miasto | rok | kwota |
---|---|---|---|
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 |
Obliczmy średnią sprzedaż, niezależnie od miasta czy roku.
Rozwiązanie:
SELECT AVG(amount) as avg_amount FROM sale;
Oto wynik:
średnia_ilość |
---|
19073.125000 |
Dyskusja:
Jeśli chcesz obliczyć średnią wartości liczbowych przechowywanych w kolumnie, możesz to zrobić za pomocą AVG()
funkcja zagregowana; jako argument przyjmuje nazwę kolumny, której średnią chcesz obliczyć. Jeśli nie określiłeś żadnych innych kolumn w SELECT
klauzula, średnia zostanie obliczona dla wszystkich rekordów w tabeli.
Oczywiście, ponieważ jest to funkcja agregująca, AVG()
może być również używany z grupami. Na przykład, jeśli chcemy znaleźć średnią sprzedaż na miasto, możemy napisać to zapytanie:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
Średnia jest obliczana dla każdego miasta:
miasto | kwota |
---|---|
Los Angeles | 7400.850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
Dodatkowo, jeśli średnia ma być zaokrąglona, możesz przekazać wynik AVG()
funkcji w ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;