Dictionary

Window function

Een window function is een SQL-functie die rekent over een groep gerelateerde rijen, terwijl elke rij zichtbaar blijft. Je gebruikt ze voor ranking, lopende totalen en vergelijkingen met vorige rijen.

Wat is een window function?

Een window function is een SQL-functie die rekent over een groep rijen die bij de huidige rij horen, zonder die rijen samen te klappen tot één resultaat.

Dat verschil is belangrijk. Met GROUP BY krijg je één rij per groep. Met een window function blijft elke oorspronkelijke rij bestaan, maar krijgt ze extra context: haar rang, een lopend totaal, of de waarde van de vorige rij.

Je gebruikt window functions wanneer je binnen een tabel wil kijken naar buren, volgorde of groepen, zonder het detail kwijt te raken.

Hoe ziet dat eruit in SQL?

Het hart van een window function is OVER. Daarmee zeg je over welk venster de functie moet rekenen.

SELECT
  customer_id,
  order_date,
  amount,
  SUM(amount) OVER (
    PARTITION BY customer_id
    ORDER BY order_date
  ) AS running_total
FROM orders;

Deze query toont elke order, plus het lopende totaal per klant. PARTITION BY maakt een apart venster per klant. ORDER BY bepaalt de volgorde binnen dat venster.

Voor ranking ziet het er zo uit.

SELECT
  region,
  salesperson,
  revenue,
  RANK() OVER (
    PARTITION BY region
    ORDER BY revenue DESC
  ) AS rank_in_region
FROM sales_people;

Elke verkoper blijft zichtbaar, maar krijgt een positie binnen de eigen regio.

Wanneer gebruik je window functions?

  • Voor ranking. Topverkopers per regio, populairste producten per categorie of recentste record per klant.

  • Voor lopende totalen. Omzet tot en met vandaag, saldo na elke transactie of voorraad door de tijd.

  • Voor vorige en volgende waarden. Met LAG en LEAD vergelijk je een rij met haar voorganger of opvolger.

  • Voor deduplicatie. Je kan per groep de meest recente rij nummeren en alleen nummer 1 bewaren.

Window function versus GROUP BY

GROUP BY vat rijen samen. Je verliest het detail en krijgt één rij per groep. Dat is perfect voor omzet per maand of aantal orders per klant.

Een window function voegt een berekening toe naast elke rij. Je behoudt het detail en krijgt tegelijk groepscontext. Dat is ideaal wanneer je de order zelf nog nodig hebt, niet alleen het maandtotaal.

Waar moet je op letten bij het gebruik van window functions

  • Ordening bepaalt de betekenis. Een lopend totaal zonder duidelijke ORDER BY is zelden betrouwbaar.

  • Gelijke waarden kunnen verrassingen geven. Bij ranking moet je kiezen hoe je omgaat met ex aequo's. RANK, DENSE_RANK en ROW_NUMBER gedragen zich anders.

  • Ze draaien na filtering en groepering. In SQL worden window functions pas toegepast nadat WHERE, GROUP BY en HAVING hun werk deden.

  • Grote vensters kosten rekenkracht. Zeker sorteringen over miljoenen rijen vragen aandacht voor partitionering en indexing.

FAQ over window functions

1. Is een window function hetzelfde als een venster in Power BI?
Nee. Het idee van context lijkt wat op elkaar, maar window functions zijn SQL-functies in een query.

2. Kan ik window functions gebruiken in elke SQL-database?
De meeste moderne databases ondersteunen ze, maar details en functienamen verschillen per systeem.

3. Waarom werkt mijn window function niet in WHERE?
Omdat SQL window functions pas later berekent. Gebruik een CTE of subquery en filter daarna op het resultaat.

Laatst Bijgewerkt: July 9, 2026 Terug naar Woordenboek
Trefwoorden
window function sql data warehouse power bi ranking running total analytische query datapijplijn