We hebben geleerd hoe we het gemiddelde van een kolom kunnen berekenen met behulp van de functie AVG. Ook weten we hoe we records kunnen selecteren die aan een specifieke voorwaarde voldoen, zoals groter zijn dan een bepaald getal. Maar hoe kunnen we records tonen die kleiner zijn dan het gemiddelde van de kolom?
Om dit te doen, gebruiken we subqueries. Een subquery is een query die eerst wordt uitgevoerd, waarbij de uitkomst van deze query vervolgens wordt gebruikt als invoer of variabele in een andere query.
Voorbeeld:
We hebben een tabel genaamd scores
met de volgende structuur:
Kolomnaam | Type | Beschrijving |
---|---|---|
id | INT | Unieke identificatie van de rij |
naam | VARCHAR | Naam van de persoon |
punten | INT | Behaalde score |
We willen alle records tonen waar de waarde in de kolom punten
kleiner is dan het gemiddelde. Dit kan als volgt:
SELECT *
FROM scores
WHERE punten < (SELECT AVG(punten) FROM scores);
In dit voorbeeld berekent de subquery SELECT AVG(punten) FROM scores
eerst het gemiddelde van de kolom punten
. Vervolgens worden in de hoofdquery alleen die records geselecteerd waarbij de waarde in punten
kleiner is dan dit gemiddelde.
Schrijf een query die alle gegevens uit de tabel purchases
ophaalt en de totale waarde per aankoop berekent. Selecteer alleen de aankopen waarvan de totale waarde groter is dan het gemiddelde van alle aankopen. Maak hierbij gebruik van een subquery.