Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Vensterfuncties | Enkele Aanvullende Onderwerpen
Geavanceerde Technieken in SQL

bookVensterfuncties

Vensterfuncties vormen een categorie SQL-functies die berekeningen uitvoeren over een reeks rijen die gerelateerd zijn aan de huidige rij binnen een gedefinieerd venster of partitie.
Ze worden gebruikt om berekeningen en analyses uit te voeren over een subset van rijen zonder het resultaat te verkleinen, in tegenstelling tot aggregatiefuncties die doorgaans het aantal geretourneerde rijen door een query verminderen.

Uitleg

Stel dat we de volgende Sales-tabel hebben:

Als ons doel is om de totale omzet voor elk specifiek product te berekenen en deze weer te geven in een extra kolom binnen de hoofdtafel in plaats van een nieuwe gegroepeerde tabel te genereren, kan het resultaat er als volgt uitzien:

Maar hoe kunnen we dit doen?
Het gebruik van GROUP BY is niet geschikt voor deze taak omdat deze clausule het aantal rijen vermindert door ze te groeperen op basis van opgegeven criteria, waardoor alleen de ID's en hun bijbehorende somwaarden worden geretourneerd.

Daarom zijn windowfuncties essentieel om dit probleem aan te pakken.

Implementatie

We kunnen het gewenste resultaat verkrijgen met de volgende query:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

Een algemene syntaxis voor het creëren van een windowfunctie kan als volgt worden beschreven:

SELECT 
    aggregation_func() OVER (
        PARTITION BY partition_column
        ORDER BY order_column
    )
FROM 
    table_name;
  • SELECT: Geeft aan dat een query begint;
  • aggregation_func(): De aggregatiefunctie (bijv. SUM, AVG, COUNT) die een berekening uitvoert over een reeks rijen gedefinieerd door het venster;
  • OVER: Trefwoord dat de windowfunctie introduceert;
  • PARTITION BY: Verdeelt het resultaat in partities op basis van de waarden van de opgegeven kolom(men). De windowfunctie werkt afzonderlijk op elke partitie;
    • partition_column: De kolom die wordt gebruikt om het resultaat te partitioneren.
  • ORDER BY: Geeft de volgorde van de rijen binnen elke partitie aan;
    • order_column: De kolom die wordt gebruikt om de rijen binnen elke partitie te ordenen.
  • FROM: Geeft de brontabel aan waarvan de gegevens worden opgehaald;
    • table_name: De naam van de tabel waarvan gegevens worden geselecteerd.
question mark

Welke clausule wordt gebruikt om de partitionering van een windowfunctie te definiëren?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 4.35

bookVensterfuncties

Veeg om het menu te tonen

Vensterfuncties vormen een categorie SQL-functies die berekeningen uitvoeren over een reeks rijen die gerelateerd zijn aan de huidige rij binnen een gedefinieerd venster of partitie.
Ze worden gebruikt om berekeningen en analyses uit te voeren over een subset van rijen zonder het resultaat te verkleinen, in tegenstelling tot aggregatiefuncties die doorgaans het aantal geretourneerde rijen door een query verminderen.

Uitleg

Stel dat we de volgende Sales-tabel hebben:

Als ons doel is om de totale omzet voor elk specifiek product te berekenen en deze weer te geven in een extra kolom binnen de hoofdtafel in plaats van een nieuwe gegroepeerde tabel te genereren, kan het resultaat er als volgt uitzien:

Maar hoe kunnen we dit doen?
Het gebruik van GROUP BY is niet geschikt voor deze taak omdat deze clausule het aantal rijen vermindert door ze te groeperen op basis van opgegeven criteria, waardoor alleen de ID's en hun bijbehorende somwaarden worden geretourneerd.

Daarom zijn windowfuncties essentieel om dit probleem aan te pakken.

Implementatie

We kunnen het gewenste resultaat verkrijgen met de volgende query:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

Een algemene syntaxis voor het creëren van een windowfunctie kan als volgt worden beschreven:

SELECT 
    aggregation_func() OVER (
        PARTITION BY partition_column
        ORDER BY order_column
    )
FROM 
    table_name;
  • SELECT: Geeft aan dat een query begint;
  • aggregation_func(): De aggregatiefunctie (bijv. SUM, AVG, COUNT) die een berekening uitvoert over een reeks rijen gedefinieerd door het venster;
  • OVER: Trefwoord dat de windowfunctie introduceert;
  • PARTITION BY: Verdeelt het resultaat in partities op basis van de waarden van de opgegeven kolom(men). De windowfunctie werkt afzonderlijk op elke partitie;
    • partition_column: De kolom die wordt gebruikt om het resultaat te partitioneren.
  • ORDER BY: Geeft de volgorde van de rijen binnen elke partitie aan;
    • order_column: De kolom die wordt gebruikt om de rijen binnen elke partitie te ordenen.
  • FROM: Geeft de brontabel aan waarvan de gegevens worden opgehaald;
    • table_name: De naam van de tabel waarvan gegevens worden geselecteerd.
question mark

Welke clausule wordt gebruikt om de partitionering van een windowfunctie te definiëren?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 3
some-alt