uitvoervolgorde volgorde sql statements

In welke volgorde voeren SQL statements uit?

Als je vaker met SQL werkt is het je vast wel eens opgevallen dat je niet in iedere situatie alle SQL statements kunt gebruiken. Dit heeft te maken met de uitvoervolgorde van de statements.

Zo kun je bijvoorbeeld na GROUP BY geen WHERE gebruiken maar moet je HAVING toepassen. Een ander voorbeeld is dat een kolom die je met AS hebt hernoemd niet beschikbaar is na het HAVING statement.

Dit komt allemaal door de volgorde waarin SQL een query uitvoert. Als je SQL leert kan dit verwarrend zijn, maar in dit blog scheppen we overzicht voor je.


De uitvoervolgorde is als volgt:

  1. FROM
  2. JOIN
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. SELECT
  7. ORDER BY

We gaan hier stap voor stap naar kijken.


1. FROM

Allereerst wordt het FROM statement uitgevoerd.

Met FROM benoem je de tabel, de bron, waaruit data verkregen moet worden.

Voorbeeld:

  1. FROM: We halen data op uit tabel movies.
  2. SELECT: We selecteren alle kolommen.

We werken in deze tutorial met de IMDb database die we in deze blog toelichten en waar je tevens de dataset kunt downloaden om mee te doen. Als je mee wilt doen met deze tutorial dan dien je tevens SQL en PgAdmin te installeren als je nog geen werkende SQL set-up hebt.

SELECT
  *
FROM
  movies;
idnameyearrank
10920Aliens19868.2
17173Animal House19787.5
18979Apollo 1319957.5
............
Columns: 4
Rows: 36


Leren werken met SQL voor data analayse? Na onze 2-daagse SQL cursus kun je volledig zelfstandig werken met SQL.

2. JOIN

execution order sql statements example

Vervolgens wordt (eventueel) het JOIN statement uitgevoerd.

Met JOIN kun je data uit verschillende tabellen samenvoegen.

**Ook interessant: uitleg & tutorial SQL LEFT JOIN


3. WHERE

3 where uitvoervolgorde

De volgende in de uitvoervolgorde is het WHERE statement.

Met WHERE pas je een of meerdere filters toe op je brondata.

Voorbeeld:

  1. FROM: We halen data op uit tabel movies.
  2. WHERE: We filteren op films met een cijfer (rank) onder de 8.
  3. SELECT: We selecteren alle kolommen.
SELECT
  *
FROM
  movies
WHERE
  rank < 8;
idnameyearrank
17173Animal House19787.5
18979Apollo 1319957.5
111813Few Good Men, A19927.5
............
Columns: 4
Rows: 17


4. GROUP BY

4 group by sql volgorde

Daarna volgt GROUP BY in de execution order.

Met GROUP BY groepeer (aggregeer) je op een of meerdere kolommen.

Voorbeeld:

  1. FROM: We halen data op uit tabel movies.
  2. WHERE: We filteren op films met een cijfer (rank) onder de 8.
  3. GROUP BY: We groeperen op kolom year.
  4. SELECT: We selecteren:
    • Kolom year.
    • Het aantal rijen na groeperen met COUNT(*) met als naam movies_count.
SELECT
  year,
  COUNT(*) AS movies_count
FROM
  movies
WHERE
  rank < 8
GROUP BY
  year;
yearmovies_count
19892
19911
19841
......
Columns: 2
Rows: 12


5. HAVING

4 group by sql volgorde

Vervolgens wordt (eventueel) het HAVING statement uitgevoerd.

Met GROUP BY groepeer (aggregeer) je op een of meerdere kolommen.

Voorbeeld:

  1. FROM: We halen data op uit tabel movies.
  2. WHERE: We filteren op films met een cijfer (rank) onder de 8.
  3. GROUP BY: We groeperen op kolom year.
  4. HAVING: We selecteren alleen:
    • Resultaten waarbij in een jaar meerdere films (> 1) zijn gemaakt.
  5. SELECT: We selecteren:
    • Kolom year.
    • Het aantal rijen na groeperen met COUNT(*) met als naam movies_count.
SELECT
  year,
  COUNT(*) AS movies_count
FROM
  movies
WHERE
  rank < 8
GROUP BY
  year
HAVING
  COUNT(*) > 1;
yearmovies_count
19892
20003
20012
19992
Columns: 2
Rows: 4

Let op:

  • In het SELECT statement hernoemen we de nieuwe kolom naar movies_count.
  • Deze naam is dus nog niet beschikbaar tijdens het HAVING statement.


6. SELECT

6 select execution order sql statements

Vervolgens wordt het SELECT statement uitgevoerd. Dit is het op één na laatste statement in de volgorde die SQL hanteert.

Met SELECT selecteer je de kolommen dit je wilt verkrijgen.

Dit hebben we in de voorbeelden tot nu toe gezien.


7. ORDER BY

7 order by execution order sql statements

Tenslotte wordt (eventueel) het ORDER BY statement uitgevoerd.

Met ORDER BY sorteer je op een of meerdere kolommen.

Voorbeeld:

  1. FROM: We halen data op uit tabel movies.
  2. WHERE: We filteren op films met een cijfer (rank) onder de 8.
  3. GROUP BY: We groeperen op kolom year.
  4. HAVING: We selecteren alleen:
    • Resultaten waarbij in een jaar meerdere films (> 1) zijn gemaakt.
  5. SELECT: We selecteren:
    • Kolom year.
    • Het aantal rijen na groeperen met COUNT(*) met als naam movies_count.
  6. ORDER BY: We sorteren:
    • Aflopend op movies_count

      Let op: de nieuwe naam movies_count is hier nu wel te gebruiken.
      Doordat kolomnaam movies_count hiervoor al vanuit SELECT is aangemaakt.

    • Oplopend op year.
SELECT
  year,
  COUNT(*) AS movies_count
FROM
  movies
WHERE
  rank < 8
GROUP BY
  year
HAVING
  COUNT(*) > 1
ORDER BY
  movies_count DESC,
  year ASC;


Samenvatting volgorde van uitvoering SQL statements (execution order in het Engels)

  • SQL statements worden in een specifieke volgorde uitgevoerd.
  1. FROM: ophalen van dat uit een tabel, de brondata.
  2. JOIN: optioneel: samenvoegen van data uit meerdere tabellen
  3. WHERE: optioneel: filter op de brondata.
  4. GROUP BY: optioneel: groeperen op een of meerdere kolommen.
  5. HAVING: optioneel: filter na groeperen.
  6. SELECT: selectie van kolommen.
  7. ORDER BY: optioneel: sorteren op kolommen.


Bezig om SQL onder de knie te krijgen?

Wellicht ben je bezig om SQL beter te leren. Wij schreven de volgende handige artikelen om je op weg te helpen:


Wil je nog veel meer leren over SQL? Bekijk dan onze SQL cursus voor data analyse of download onderstaande opleidingsbrochure. In onze SQL cursus wisselen theorie en praktijkoefening elkaar steeds af. Nadat je deze training hebt gevolgd kun je zelfstandig met SQL werken. Je kunt ook altijd even contact opnemen via info@datasciencepartners.nl of 020 - 24 43 146 als je een vraag hebt.

by: