Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Vensterfuncties | Enkele Aanvullende Onderwerpen
Quizzes & Challenges
Quizzes
Challenges
/
SQL-Optimalisatie en Queryfuncties

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 voor het uitvoeren van berekeningen en analyses 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, we hebben de volgende Sales-tabel:

12
SELECT * FROM sales
copy

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 vensterfuncties essentieel om dit probleem op te lossen.

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 aanmaken 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: sleutelwoord 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: specificeert de volgorde van de rijen binnen elke partitie;
    • order_column: de kolom die wordt gebruikt om de rijen binnen elke partitie te ordenen.
  • FROM: geeft de brontabel aan waaruit de gegevens worden opgehaald;
    • table_name: de naam van de tabel waaruit 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 2

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.55

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 voor het uitvoeren van berekeningen en analyses 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, we hebben de volgende Sales-tabel:

12
SELECT * FROM sales
copy

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 vensterfuncties essentieel om dit probleem op te lossen.

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 aanmaken 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: sleutelwoord 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: specificeert de volgorde van de rijen binnen elke partitie;
    • order_column: de kolom die wordt gebruikt om de rijen binnen elke partitie te ordenen.
  • FROM: geeft de brontabel aan waaruit de gegevens worden opgehaald;
    • table_name: de naam van de tabel waaruit 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 2
some-alt