Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Gebruik van Windowfunctie | Enkele Aanvullende Onderwerpen
SQL-Optimalisatie en Queryfuncties

bookUitdaging: Gebruik van Windowfunctie

Stel dat we informatie willen toevoegen aan de tabel over tot welke klasse elke gebruiker behoort op basis van hun rekeningbalans.

De klassen worden als volgt bepaald:

  • Een persoon met een rekeningbalans in de onderste 25% behoort tot de vierde klasse;
  • Een persoon met een rekeningbalans tussen 25% en 50% behoort tot de derde klasse;
  • Een persoon met een rekeningbalans tussen 50% en 75% behoort tot de tweede klasse;
  • Een persoon met een rekeningbalans in de bovenste 25% behoort tot de eerste klasse.

Om dit probleem op te lossen, kunnen we een windowfunctie gebruiken genaamd NTILE().
De functie NTILE() is een windowfunctie die de rijen in een geordende partitie verdeelt in een opgegeven aantal ongeveer gelijke groepen, of "tegels".
Elke rij krijgt een groepsnummer toegewezen, beginnend bij 1, op basis van de groep waarin deze valt.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)
Note
Opmerking

In het voorbeeld hoeven we geen PARTITION BY-clausule te specificeren omdat we de NTILE()-functie willen toepassen op het volledige resultaat, niet op specifieke subsets of partities van de gegevens.
De ORDER BY-clausule is voldoende omdat deze de volgorde bepaalt waarin de rijen over de tegels worden verdeeld, zodat de groepering gebaseerd is op de gesorteerde volgorde van de salarissen in de gehele tabel.
Als we tegels binnen specifieke groepen (bijvoorbeeld afdelingen) wilden berekenen, zouden we PARTITION BY gebruiken.

Taak

Swipe to start coding

Vul de lege plekken in om de functie NTILE() te gebruiken, zodat elke rekeninghouder wordt toegewezen aan een klasse van 1 tot 4, waarbij klasse 1 de hoogste saldi bevat.

  • Gebruik 4 als het aantal klassen;
  • Sorteer op de kolom balance in aflopende volgorde;
  • Zorg ervoor dat het resultaat account_holder, balance en hun class toont.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 4
single

single

Vraag AI

expand

Vraag AI

ChatGPT

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

close

bookUitdaging: Gebruik van Windowfunctie

Veeg om het menu te tonen

Stel dat we informatie willen toevoegen aan de tabel over tot welke klasse elke gebruiker behoort op basis van hun rekeningbalans.

De klassen worden als volgt bepaald:

  • Een persoon met een rekeningbalans in de onderste 25% behoort tot de vierde klasse;
  • Een persoon met een rekeningbalans tussen 25% en 50% behoort tot de derde klasse;
  • Een persoon met een rekeningbalans tussen 50% en 75% behoort tot de tweede klasse;
  • Een persoon met een rekeningbalans in de bovenste 25% behoort tot de eerste klasse.

Om dit probleem op te lossen, kunnen we een windowfunctie gebruiken genaamd NTILE().
De functie NTILE() is een windowfunctie die de rijen in een geordende partitie verdeelt in een opgegeven aantal ongeveer gelijke groepen, of "tegels".
Elke rij krijgt een groepsnummer toegewezen, beginnend bij 1, op basis van de groep waarin deze valt.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)
Note
Opmerking

In het voorbeeld hoeven we geen PARTITION BY-clausule te specificeren omdat we de NTILE()-functie willen toepassen op het volledige resultaat, niet op specifieke subsets of partities van de gegevens.
De ORDER BY-clausule is voldoende omdat deze de volgorde bepaalt waarin de rijen over de tegels worden verdeeld, zodat de groepering gebaseerd is op de gesorteerde volgorde van de salarissen in de gehele tabel.
Als we tegels binnen specifieke groepen (bijvoorbeeld afdelingen) wilden berekenen, zouden we PARTITION BY gebruiken.

Taak

Swipe to start coding

Vul de lege plekken in om de functie NTILE() te gebruiken, zodat elke rekeninghouder wordt toegewezen aan een klasse van 1 tot 4, waarbij klasse 1 de hoogste saldi bevat.

  • Gebruik 4 als het aantal klassen;
  • Sorteer op de kolom balance in aflopende volgorde;
  • Zorg ervoor dat het resultaat account_holder, balance en hun class toont.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 4
single

single

some-alt