ACID-transacties
ACID-transacties zijn de vier garanties (Atomicity, Consistency, Isolation, Durability) die zorgen dat je data correct blijft, ook als een p...
Lees meerEen Common Table Expression is een tijdelijke query met een naam binnen één SQL-statement. Met een CTE kan je een lange query opdelen in leesbare stappen zonder meteen een tabel of view aan te maken.
Een Common Table Expression, meestal CTE genoemd, is een tijdelijke query met een naam binnen één SQL-statement. Je schrijft ze bovenaan met WITH en gebruikt de naam daarna alsof het een tabel is.
Een CTE bestaat alleen tijdens die ene query. Ze maakt je SQL leesbaarder, omdat je een lange bewerking kan opdelen in stappen met duidelijke namen.
Denk aan een werkblad naast je berekening. Je bewaart geen nieuwe tabel in de databank, maar je geeft een tussenstap wel een naam zodat de rest van de query begrijpelijk blijft.
Je begint met WITH, geeft de tussenstap een naam, en gebruikt die naam in de hoofdquery.
WITH customer_revenue AS (
SELECT
customer_id,
SUM(amount) AS total_revenue
FROM orders
GROUP BY customer_id
)
SELECT
customer_id,
total_revenue
FROM customer_revenue
WHERE total_revenue > 10000;De CTE customer_revenue berekent eerst omzet per klant. De hoofdquery filtert daarna op klanten boven 10.000 euro omzet.
Om complexe query's leesbaar te maken. Elke stap krijgt een naam die uitlegt wat er gebeurt.
Om een tussenresultaat opnieuw te gebruiken. Binnen dezelfde query kan je naar dezelfde CTE verwijzen.
Om window functions te filteren. Bereken eerst ROW_NUMBER() in een CTE en filter daarna op rij 1.
Om transformatielogica te documenteren. In dbt-achtige modellen lees je CTE's vaak als de stappen van een datapijplijn.
Een subquery staat midden in een query. Dat is kort handig, maar bij meerdere lagen wordt het snel moeilijk leesbaar. Een CTE zet dezelfde logica bovenaan met een naam.
Een view bewaart de query als object in de databank. Een CTE bewaart niets. Ze bestaat alleen voor het statement dat je op dat moment uitvoert. Gebruik dus een view wanneer meerdere mensen dezelfde definitie nodig hebben, en een CTE wanneer je één query helder wil houden.
Leesbaarheid is het doel. Tien CTE's met vage namen helpen niet. Kies namen die de stap uitleggen.
Performance verschilt per database. Sommige systemen optimaliseren CTE's alsof het inline subqueries zijn. Andere behandelen ze meer als aparte tussenstappen.
Een CTE is geen permanente opslag. Wil je het resultaat hergebruiken buiten deze query, maak dan een view, materialized view of tabel.
1. Maakt een CTE mijn query sneller?
Niet automatisch. Ze maakt je query vooral leesbaarder. De optimizer beslist wat er technisch mee gebeurt.
2. Kan een CTE zichzelf aanroepen?
Ja, sommige databases ondersteunen recursieve CTE's. Die gebruik je bijvoorbeeld voor hiërarchische data zoals organisatiestructuren.
3. Is een CTE hetzelfde als een tijdelijke tabel?
Nee. Een tijdelijke tabel wordt als object aangemaakt voor een sessie of transactie. Een CTE leeft alleen binnen één statement.
ACID-transacties zijn de vier garanties (Atomicity, Consistency, Isolation, Durability) die zorgen dat je data correct blijft, ook als een p...
Lees meerEen afleidingsregel legt uit hoe een nieuwe waarde wordt berekend of bepaald uit bestaande data. Ze maakt businesslogica achter velden, metr...
Lees meerApache Airflow is een open-source orkestrator: je beschrijft je datapijplijnen als code in Python, in de vorm van een DAG, en Airflow plant ...
Lees meerApache Spark is een open-source engine voor grootschalige data-analyse op een cluster. Je schrijft SQL of DataFrames in Python, Scala of Jav...
Lees meerEen API of Application Programming Interface is de afgesproken manier waarop software met andere software praat. Je stuurt een verzoek in ee...
Lees meer
Zeven nieuwe Data Panda-connectors uit juni 2026, met concrete toepassingen voor rapportering, voorraad, finance, ticketing, planning en ope...
Nieuw in Microsoft Fabric? Zo verschillen een lakehouse en een warehouse, in mensentaal: wat ze doen, wanneer je wat kiest en wanneer je bei...