Utmaning: Användning av Fönsterfunktion
Låt oss titta på tabellen bank_accounts
som vi har använt i de tidigare avsnitten:
Antag att vi vill lägga till information i tabellen om vilken klass varje användare tillhör baserat på deras kontosaldo.
Klasserna bestäms enligt följande:
- En person vars kontosaldo är bland de lägsta
25%
tillhör fjärde klassen; - En person vars kontosaldo är mellan
25%
och50%
tillhör tredje klassen; - En person vars kontosaldo är mellan
50%
och75%
tillhör andra klassen; - En person vars kontosaldo är bland de högsta
25%
tillhör första klassen.
För att lösa detta problem kan vi använda en fönsterfunktion som heter NTILE()
.
Funktionen NTILE()
är en fönsterfunktion som delar upp raderna i en ordnad partition i ett angivet antal ungefär lika stora grupper, eller "tiles".
Den tilldelar varje rad ett gruppnummer, med början på 1
, baserat på vilken grupp den hamnar i.
NTILE(num_buckets) OVER (
ORDER BY sort_column
)
Notera
I exemplet behöver vi inte ange en
PARTITION BY
-sats eftersom vi vill tillämpa funktionenNTILE()
på hela resultatmängden, inte på specifika delmängder eller partitioner av data.
ORDER BY
-satsen är tillräcklig eftersom den definierar ordningen i vilken raderna fördelas i tiles, vilket säkerställer att gruppering sker baserat på den sorterade ordningen av löner över hela tabellen.
Om vi ville beräkna tiles inom specifika grupper (t.ex. avdelningar) skulle vi användaPARTITION BY
.
Swipe to start coding
Din uppgift är att använda funktionen NTILE()
för att få information om klassindelningen för varje kontoinnehavare.
Du ska:
- Ange antalet klasser som argument till funktionen.
- Ange sortering efter kontosaldo för att bestämma klass.
- Eftersom vi antar att den första klassen är den med högst saldo och så vidare, måste vi sortera saldona i fallande ordning.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
How do I write a query to assign classes using NTILE() for this table?
Can you explain how NTILE() works with an example using these balances?
What would the result look like after adding the class column?
Awesome!
Completion rate improved to 4.35
Utmaning: Användning av Fönsterfunktion
Svep för att visa menyn
Låt oss titta på tabellen bank_accounts
som vi har använt i de tidigare avsnitten:
Antag att vi vill lägga till information i tabellen om vilken klass varje användare tillhör baserat på deras kontosaldo.
Klasserna bestäms enligt följande:
- En person vars kontosaldo är bland de lägsta
25%
tillhör fjärde klassen; - En person vars kontosaldo är mellan
25%
och50%
tillhör tredje klassen; - En person vars kontosaldo är mellan
50%
och75%
tillhör andra klassen; - En person vars kontosaldo är bland de högsta
25%
tillhör första klassen.
För att lösa detta problem kan vi använda en fönsterfunktion som heter NTILE()
.
Funktionen NTILE()
är en fönsterfunktion som delar upp raderna i en ordnad partition i ett angivet antal ungefär lika stora grupper, eller "tiles".
Den tilldelar varje rad ett gruppnummer, med början på 1
, baserat på vilken grupp den hamnar i.
NTILE(num_buckets) OVER (
ORDER BY sort_column
)
Notera
I exemplet behöver vi inte ange en
PARTITION BY
-sats eftersom vi vill tillämpa funktionenNTILE()
på hela resultatmängden, inte på specifika delmängder eller partitioner av data.
ORDER BY
-satsen är tillräcklig eftersom den definierar ordningen i vilken raderna fördelas i tiles, vilket säkerställer att gruppering sker baserat på den sorterade ordningen av löner över hela tabellen.
Om vi ville beräkna tiles inom specifika grupper (t.ex. avdelningar) skulle vi användaPARTITION BY
.
Swipe to start coding
Din uppgift är att använda funktionen NTILE()
för att få information om klassindelningen för varje kontoinnehavare.
Du ska:
- Ange antalet klasser som argument till funktionen.
- Ange sortering efter kontosaldo för att bestämma klass.
- Eftersom vi antar att den första klassen är den med högst saldo och så vidare, måste vi sortera saldona i fallande ordning.
Lösning
Tack för dina kommentarer!
Awesome!
Completion rate improved to 4.35single