Database schema icon markdown

Subqueries

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.

Opdracht

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.