Problém:
Chcete vypočítat průměr čísel uložených ve sloupci.
Příklad:
Naše databáze obsahuje tabulku s názvem sale
s údaji v následujících sloupcích:id
, city
, year
a amount
.
id | město | rok | částka |
---|---|---|---|
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 | 89 000,40 |
7 | Annandale | 2018 | 21005,77 |
8 | Chicago | 2016 | 2300,89 |
Vypočítejme průměrný prodej bez ohledu na město nebo rok.
Řešení:
SELECT AVG(amount) as avg_amount FROM sale;
Zde je výsledek:
průměrná_částka |
---|
19073,125000 |
Diskuse:
Pokud chcete vypočítat průměr číselných hodnot uložených ve sloupci, můžete tak učinit pomocí AVG()
agregační funkce; jako svůj argument bere název sloupce, jehož průměr chcete vypočítat. Pokud jste v SELECT
nezadali žádné další sloupce klauzule, bude průměr vypočítán pro všechny záznamy v tabulce.
Samozřejmě, protože jde o agregovanou funkci, AVG()
lze použít i se skupinami. Pokud bychom například chtěli zjistit průměrný prodej na město, můžeme napsat tento dotaz:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
Průměr se vypočítá pro každé město:
city | částka |
---|---|
Los Angeles | 7400,850000 |
Chicago | 30882,250000 |
Annandale | 15045,516667 |
Navíc, pokud je třeba průměr zaokrouhlit, můžete předat výsledek AVG()
funkce do ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;