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;