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
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