Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Brug af Vinduesfunktion | Nogle Yderligere Emner
Avancerede Teknikker i SQL

bookUdfordring: Brug af Vinduesfunktion

Lad os se på tabellen bank_accounts, som vi har brugt i de foregående afsnit:

Antag, at vi ønsker at tilføje information til tabellen om hvilken klasse hver bruger tilhører baseret på deres kontosaldo.

Klasserne bestemmes som følger:

  • En person, hvis kontosaldo er blandt de nederste 25%, tilhører fjerde klasse;
  • En person, hvis kontosaldo er mellem 25% og 50%, tilhører tredje klasse;
  • En person, hvis kontosaldo er mellem 50% og 75%, tilhører anden klasse;
  • En person, hvis kontosaldo er blandt de øverste 25%, tilhører første klasse.

For at løse dette problem kan vi bruge en vinduesfunktion kaldet NTILE().
Funktionen NTILE() er en vinduesfunktion, der opdeler rækkerne i en ordnet partition i et angivet antal omtrent lige store grupper eller "tiles".
Den tildeler hver række et gruppenummer, startende fra 1, baseret på hvilken gruppe rækken tilhører.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Bemærk

I eksemplet behøver vi ikke at angive en PARTITION BY-klausul, fordi vi ønsker at anvende NTILE()-funktionen på hele resultatmængden, ikke på specifikke undergrupper eller partitioner af dataene.
ORDER BY-klausulen er tilstrækkelig, da den definerer rækkefølgen, hvori rækkerne fordeles i tiles, hvilket sikrer, at grupperingen er baseret på den sorterede rækkefølge af lønninger på tværs af hele tabellen.
Hvis vi ønskede at beregne tiles inden for specifikke grupper (f.eks. afdelinger), ville vi bruge PARTITION BY.

Opgave

Swipe to start coding

Din opgave er at anvende NTILE()-funktionen for at få information om klassen for hver kontohaver.

Du skal:

  1. Angive antallet af klasser som argument til funktionen.
  2. Angive sortering efter kontosaldo for at bestemme klassen.
  3. Da vi antager, at den første klasse er klassen med den højeste saldo og så videre, skal vi sortere saldi i faldende rækkefølge.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookUdfordring: Brug af Vinduesfunktion

Stryg for at vise menuen

Lad os se på tabellen bank_accounts, som vi har brugt i de foregående afsnit:

Antag, at vi ønsker at tilføje information til tabellen om hvilken klasse hver bruger tilhører baseret på deres kontosaldo.

Klasserne bestemmes som følger:

  • En person, hvis kontosaldo er blandt de nederste 25%, tilhører fjerde klasse;
  • En person, hvis kontosaldo er mellem 25% og 50%, tilhører tredje klasse;
  • En person, hvis kontosaldo er mellem 50% og 75%, tilhører anden klasse;
  • En person, hvis kontosaldo er blandt de øverste 25%, tilhører første klasse.

For at løse dette problem kan vi bruge en vinduesfunktion kaldet NTILE().
Funktionen NTILE() er en vinduesfunktion, der opdeler rækkerne i en ordnet partition i et angivet antal omtrent lige store grupper eller "tiles".
Den tildeler hver række et gruppenummer, startende fra 1, baseret på hvilken gruppe rækken tilhører.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Bemærk

I eksemplet behøver vi ikke at angive en PARTITION BY-klausul, fordi vi ønsker at anvende NTILE()-funktionen på hele resultatmængden, ikke på specifikke undergrupper eller partitioner af dataene.
ORDER BY-klausulen er tilstrækkelig, da den definerer rækkefølgen, hvori rækkerne fordeles i tiles, hvilket sikrer, at grupperingen er baseret på den sorterede rækkefølge af lønninger på tværs af hele tabellen.
Hvis vi ønskede at beregne tiles inden for specifikke grupper (f.eks. afdelinger), ville vi bruge PARTITION BY.

Opgave

Swipe to start coding

Din opgave er at anvende NTILE()-funktionen for at få information om klassen for hver kontohaver.

Du skal:

  1. Angive antallet af klasser som argument til funktionen.
  2. Angive sortering efter kontosaldo for at bestemme klassen.
  3. Da vi antager, at den første klasse er klassen med den højeste saldo og så videre, skal vi sortere saldi i faldende rækkefølge.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

close

Awesome!

Completion rate improved to 4.35
Sektion 3. Kapitel 5
single

single

some-alt