Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Bruk av Vindusfunksjon | Noen Tilleggs­emner
Avanserte Teknikker i SQL

bookUtfordring: Bruk av Vindusfunksjon

La oss se på tabellen bank_accounts som vi har brukt i de forrige seksjonene:

La oss anta at vi ønsker å legge til informasjon i tabellen om hvilken klasse hver bruker tilhører basert på saldoen på kontoen deres.

Klassene bestemmes som følger:

  • En person med kontosaldo blant de nederste 25% tilhører fjerde klasse;
  • En person med kontosaldo mellom 25% og 50% tilhører tredje klasse;
  • En person med kontosaldo mellom 50% og 75% tilhører andre klasse;
  • En person med kontosaldo blant de øverste 25% tilhører første klasse.

For å løse dette problemet kan vi bruke en vindusfunksjon kalt NTILE().
Funksjonen NTILE() er en vindusfunksjon som deler radene i en ordnet partisjon inn i et angitt antall omtrent like store grupper, eller "tiles".
Den tildeler hver rad et gruppenummer, som starter på 1, basert på hvilken gruppe raden havner i.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Merk

I eksempelet trenger vi ikke å angi en PARTITION BY-setning fordi vi ønsker å bruke NTILE()-funksjonen på hele resultatsettet, ikke på spesifikke delmengder eller partisjoner av dataene.
ORDER BY-setningen er tilstrekkelig, da den definerer rekkefølgen radene fordeles i tile-grupper, og sikrer at gruppering skjer basert på sortert rekkefølge av saldoene i hele tabellen.
Hvis vi ønsket å beregne tiles innenfor spesifikke grupper (f.eks. avdelinger), ville vi brukt PARTITION BY.

Oppgave

Swipe to start coding

Din oppgave er å bruke NTILE()-funksjonen for å få informasjon om klassen til hver kontoinnehaver.

Du skal:

  1. Angi antall klasser som argument til funksjonen.
  2. Sette opp sortering etter kontosaldo for å bestemme klasse.
  3. Siden vi antar at første klasse er klassen med høyest saldo og så videre, må vi sortere saldoene i synkende rekkefølge.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

close

Awesome!

Completion rate improved to 4.35

bookUtfordring: Bruk av Vindusfunksjon

Sveip for å vise menyen

La oss se på tabellen bank_accounts som vi har brukt i de forrige seksjonene:

La oss anta at vi ønsker å legge til informasjon i tabellen om hvilken klasse hver bruker tilhører basert på saldoen på kontoen deres.

Klassene bestemmes som følger:

  • En person med kontosaldo blant de nederste 25% tilhører fjerde klasse;
  • En person med kontosaldo mellom 25% og 50% tilhører tredje klasse;
  • En person med kontosaldo mellom 50% og 75% tilhører andre klasse;
  • En person med kontosaldo blant de øverste 25% tilhører første klasse.

For å løse dette problemet kan vi bruke en vindusfunksjon kalt NTILE().
Funksjonen NTILE() er en vindusfunksjon som deler radene i en ordnet partisjon inn i et angitt antall omtrent like store grupper, eller "tiles".
Den tildeler hver rad et gruppenummer, som starter på 1, basert på hvilken gruppe raden havner i.

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Merk

I eksempelet trenger vi ikke å angi en PARTITION BY-setning fordi vi ønsker å bruke NTILE()-funksjonen på hele resultatsettet, ikke på spesifikke delmengder eller partisjoner av dataene.
ORDER BY-setningen er tilstrekkelig, da den definerer rekkefølgen radene fordeles i tile-grupper, og sikrer at gruppering skjer basert på sortert rekkefølge av saldoene i hele tabellen.
Hvis vi ønsket å beregne tiles innenfor spesifikke grupper (f.eks. avdelinger), ville vi brukt PARTITION BY.

Oppgave

Swipe to start coding

Din oppgave er å bruke NTILE()-funksjonen for å få informasjon om klassen til hver kontoinnehaver.

Du skal:

  1. Angi antall klasser som argument til funksjonen.
  2. Sette opp sortering etter kontosaldo for å bestemme klasse.
  3. Siden vi antar at første klasse er klassen med høyest saldo og så videre, må vi sortere saldoene i synkende rekkefølge.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

close

Awesome!

Completion rate improved to 4.35
Seksjon 3. Kapittel 5
single

single

some-alt