Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Gebruik van Window-Functie | Enkele Aanvullende Onderwerpen
Geavanceerde Technieken in SQL

bookUitdaging: Gebruik van Window-Functie

Laten we de tabel bank_accounts bekijken die we in de vorige secties hebben gebruikt:

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 window-functie gebruiken genaamd NTILE().
De functie NTILE() is een window-functie 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
)

Opmerking

In het voorbeeld hoeven we geen PARTITION BY-clausule te specificeren omdat we de functie NTILE() willen toepassen op de volledige resultaatset, 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

Je taak is om de functie NTILE() toe te passen om informatie te verkrijgen over de klasse van elke rekeninghouder.

Je moet:

  1. Het aantal klassen opgeven als argument van de functie.
  2. Sorteren op rekeningbalans om de klasse te bepalen.
  3. Aangezien we aannemen dat de eerste klasse de klasse met het hoogste saldo is, moeten we de saldi in aflopende volgorde ordenen.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 5
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

Awesome!

Completion rate improved to 4.35

bookUitdaging: Gebruik van Window-Functie

Veeg om het menu te tonen

Laten we de tabel bank_accounts bekijken die we in de vorige secties hebben gebruikt:

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 window-functie gebruiken genaamd NTILE().
De functie NTILE() is een window-functie 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
)

Opmerking

In het voorbeeld hoeven we geen PARTITION BY-clausule te specificeren omdat we de functie NTILE() willen toepassen op de volledige resultaatset, 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

Je taak is om de functie NTILE() toe te passen om informatie te verkrijgen over de klasse van elke rekeninghouder.

Je moet:

  1. Het aantal klassen opgeven als argument van de functie.
  2. Sorteren op rekeningbalans om de klasse te bepalen.
  3. Aangezien we aannemen dat de eerste klasse de klasse met het hoogste saldo is, moeten we de saldi in aflopende volgorde ordenen.

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!

close

Awesome!

Completion rate improved to 4.35
Sectie 3. Hoofdstuk 5
single

single

some-alt