Uitdaging: 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%
en50%
behoort tot de derde klasse; - Een persoon met een rekeningbalans tussen
50%
en75%
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 functieNTILE()
willen toepassen op de volledige resultaatset, niet op specifieke subsets of partities van de gegevens.
DeORDER 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 wePARTITION BY
gebruiken.
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:
- Het aantal klassen opgeven als argument van de functie.
- Sorteren op rekeningbalans om de klasse te bepalen.
- Aangezien we aannemen dat de eerste klasse de klasse met het hoogste saldo is, moeten we de saldi in aflopende volgorde ordenen.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4.35
Uitdaging: 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%
en50%
behoort tot de derde klasse; - Een persoon met een rekeningbalans tussen
50%
en75%
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 functieNTILE()
willen toepassen op de volledige resultaatset, niet op specifieke subsets of partities van de gegevens.
DeORDER 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 wePARTITION BY
gebruiken.
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:
- Het aantal klassen opgeven als argument van de functie.
- Sorteren op rekeningbalans om de klasse te bepalen.
- Aangezien we aannemen dat de eerste klasse de klasse met het hoogste saldo is, moeten we de saldi in aflopende volgorde ordenen.
Oplossing
Bedankt voor je feedback!
Awesome!
Completion rate improved to 4.35single