Utfordring: 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%
og50%
tilhører tredje klasse; - En person med kontosaldo mellom
50%
og75%
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 å brukeNTILE()
-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 bruktPARTITION BY
.
Swipe to start coding
Din oppgave er å bruke NTILE()
-funksjonen for å få informasjon om klassen til hver kontoinnehaver.
Du skal:
- Angi antall klasser som argument til funksjonen.
- Sette opp sortering etter kontosaldo for å bestemme klasse.
- 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
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Utfordring: 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%
og50%
tilhører tredje klasse; - En person med kontosaldo mellom
50%
og75%
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 å brukeNTILE()
-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 bruktPARTITION BY
.
Swipe to start coding
Din oppgave er å bruke NTILE()
-funksjonen for å få informasjon om klassen til hver kontoinnehaver.
Du skal:
- Angi antall klasser som argument til funksjonen.
- Sette opp sortering etter kontosaldo for å bestemme klasse.
- 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
Takk for tilbakemeldingene dine!
Awesome!
Completion rate improved to 4.35single