Probleem:
U wilt het gemiddelde berekenen van de getallen die in een kolom zijn opgeslagen.
Voorbeeld:
Onze database heeft een tabel met de naam sale
met gegevens in de volgende kolommen:id
, city
, year
, en amount
.
id | stad | jaar | bedrag |
---|---|---|---|
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 |
Laten we de gemiddelde verkoop berekenen, ongeacht de stad of het jaar.
Oplossing:
SELECT AVG(amount) as avg_amount FROM sale;
Dit is het resultaat:
gem_bedrag |
---|
19073.125000 |
Discussie:
Als u het gemiddelde wilt berekenen van de numerieke waarden die in een kolom zijn opgeslagen, kunt u dit doen met de AVG()
geaggregeerde functie; het neemt als argument de naam van de kolom waarvan u het gemiddelde wilt berekenen. Als u geen andere kolommen heeft opgegeven in de SELECT
clausule, wordt het gemiddelde berekend voor alle records in de tabel.
Omdat het natuurlijk een geaggregeerde functie is, AVG()
kan ook met groepen worden gebruikt. Als we bijvoorbeeld de gemiddelde verkoop per stad willen vinden, kunnen we deze vraag schrijven:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
Het gemiddelde wordt berekend voor elke stad:
stad | bedrag |
---|---|
Los Angeles | 7400.850000 |
Chicago | 30882.250000 |
Annandale | 15045.516667 |
Bovendien, als het gemiddelde moet worden afgerond, kunt u het resultaat van de AVG()
. doorgeven functie in ROUND()
:
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;