Aan de slagGa gratis aan de slag

SQL in een notendop (2)

Een andere veelvoorkomende databasetaak is aggregatie: je reduceert je gegevens door ze op te delen in stukken en elk stuk samen te vatten.

In SQL doe je dit met het commando GROUP BY. Dit commando verdeelt je gegevens in groepen en past een functie uit je SELECT-instructie toe op elke groep.

Als je bijvoorbeeld het aantal vluchten per vertrekpunt wil tellen, kun je de query gebruiken

SELECT COUNT(*) FROM flights
GROUP BY origin;

GROUP BY origin vertelt SQL dat je in de output een rij wil voor elke unieke waarde van de kolom origin. De SELECT-instructie selecteert de waarden die je in elke kolom wil vullen. Hier willen we elke rij in elk van de groepen COUNT()en.

Je kunt op meer dan één kolom GROUP BY toepassen. Doe je dat, dan bevat de resulterende tabel een rij voor elke combinatie van de unieke waarden in elke kolom. De volgende query telt het aantal vluchten van SEA en PDX naar elke bestemmingsluchthaven:

SELECT origin, dest, COUNT(*) FROM flights
GROUP BY origin, dest;

De output bevat een rij voor elke combinatie van de waarden in origin en dest (dus een rij met elk vertrekpunt en elke bestemming waarheen een vlucht is gegaan). Er is ook een kolom met de COUNT() van alle rijen in elke groep.

Een uitgebreidere uitleg van SQL vind je hier.

Welke informatie haalt deze query op? Denk eraan: de tabel flights bevat informatie over vluchten die in 2014 en 2015 vertrokken zijn uit PDX en SEA. Let op: de functie AVG() geeft de gemiddelde waarde van een kolom!

SELECT AVG(air_time) / 60 FROM flights
GROUP BY origin, carrier;

Deze oefening maakt deel uit van de cursus

Basis van PySpark

Cursus bekijken

Praktische interactieve oefening

Zet theorie om in actie met een van onze interactieve oefeningen.

Begin met trainen