SQL leren: AVG
Gemiddelden met AVG
"Zijn onze klanten tevreden?" vraagt Lien. "En hoe lang houden ze een fiets gemiddeld bij?" Gemiddelden dus. Met een paar addertjes.
AVG berekent het gemiddelde
AVG (average) telt de waarden op en deelt door hun aantal. Dit is de gemiddelde dagprijs van alle fietsen.
Een gemiddelde is zelden een rond getal. Dat is geen fout: SQL rondt niet af tenzij je erom vraagt.
SELECT AVG(dagprijs) AS gemiddelde_dagprijs FROM fietsen| gemiddelde_dagprijs |
|---|
| 21.625 |
AVG slaat NULL over
Net als COUNT(kolom) en SUM kijkt AVG alleen naar ingevulde waarden. De gemiddelde beoordeling is dus de som gedeeld door 24 beoordelingen, niet door alle 30 verhuringen.
Dat is meestal wat je wil: wie niets invulde, gaf geen nul.
SELECT AVG(beoordeling) AS gemiddelde, SUM(beoordeling) AS som, COUNT(beoordeling) AS aantal FROM verhuringen| gemiddelde | som | aantal |
|---|---|---|
| 4.125 | 99 | 24 |
Valkuil, delen door gehele getallen
Je kan een gemiddelde ook zelf berekenen met SUM(...) / COUNT(...). Maar zijn beide gehele getallen, dan deelt SQLite ook geheel en gooit de rest weg: 7 / 2 geeft 3.
AVG heeft daar geen last van. Hier zie je het verschil voor de huurduur van de e-bikes.
SELECT SUM(dagen) / COUNT(*) AS zelf_gedeeld, AVG(dagen) AS met_avg FROM verhuringen WHERE fietstype = 'e-bike'| zelf_gedeeld | met_avg |
|---|---|
| 3 | 3.1 |
Probeer het zelf
Wat is de gemiddelde beoordeling van de verhuringen van e-bikes?
Klaar voor meer?
De volledige les heeft 6 oefeningen, van makkelijk naar uitdagend, met hints, punten en een reeks die je kan opbouwen.
Begin aan de les