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;