Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Användning av Fönsterfunktion | Några Ytterligare Ämnen
Avancerade Tekniker i SQL

bookUtmaning: 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% och 50% tillhör tredje klassen;
  • En person vars kontosaldo är mellan 50% och 75% 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 funktionen NTILE()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ända PARTITION BY.

Uppgift

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:

  1. Ange antalet klasser som argument till funktionen.
  2. Ange sortering efter kontosaldo för att bestämma klass.
  3. 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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 5
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 4.35

bookUtmaning: 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% och 50% tillhör tredje klassen;
  • En person vars kontosaldo är mellan 50% och 75% 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 funktionen NTILE()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ända PARTITION BY.

Uppgift

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:

  1. Ange antalet klasser som argument till funktionen.
  2. Ange sortering efter kontosaldo för att bestämma klass.
  3. 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

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

close

Awesome!

Completion rate improved to 4.35
Avsnitt 3. Kapitel 5
single

single

some-alt