Oracle Rank -funksjon

Oracle Rank -funksjon

I dette innlegget vil du møte Rank () -funksjonen i Oracle -databaser som lar deg bestemme rangen til en rad fra et gitt sett med rader.

Oracle Rank -funksjon

Rank () -funksjonen i Oracle lar oss tildele en rangering til hver rad i et resultatsett. Funksjonen tildeler samme rangering til alle radene med lignende verdier og legger til et tall til neste rad i rang.

Vi kan uttrykke syntaks for funksjonen som vist i følgende:

Rang () over (
[query_partition_clause]
Bestill etter sort_expression [ASC | Desc] [NULLS First | SISTE]
);

Funksjonen støtter følgende parametere:

  1. query_partition_clause - Det er en valgfri klausul som definerer tilstanden for å dele radene i spørringsresultatet som er satt inn i forskjellige grupper eller partisjoner. Rank () -funksjonen blir deretter brukt individuelt på de resulterende partisjonene.
  2. sort_expression - Denne parameteren angir kolonnen eller uttrykket som brukes til å bestemme rangeringen av radene. De resulterende radene er rangert i stigende eller synkende rekkefølge som definert av ASC- og DESC -nøkkelordene. Standard sorteringsrekkefølge er satt til å stige opp.
  3. Til slutt bestemmer nulls nøkkelordet hvordan funksjonen behandler noen nullverdier når du rangerer radene. Aksepterte parametere inkluderer:
    • De første og siste nøkkelordene som spesifiserer om nullverdiene skal rangeres først eller sist. Som standard sorterer funksjonen nullverdiene først.

Oracle Rank () Funksjonseksempler

For å illustrere hvordan du bruker Rank () -funksjonen i Oracle, vil vi bruke de ansatte tabell standardinnsamling.

Tenk på tabellen nedenfor:

Velg First_Name, Last_name, Palary, JOB_ID fra ansatte EMP;

Resultat:

Eksempel 1: Bruke rangfunksjonen for å bestemme rangering

Dette eksemplet viser bruken av rangeringsfunksjonen for å bestemme rangering av hver ansatt i tabellen.

Velg First_name, Last_name, Palary, JOB_ID, Rank () Over (bestilling etter lønn ASC) som rangering
fra ansatte EMP;

I den oppgitte spørringen bruker vi rangfunksjonen til å tilordne en rangering til hver rad i de ansatte -tabellen basert på verdiene i lønnskolonnen.

Funksjonen bruker "orden etter" -bestemmelsen for å spesifisere rekkefølgen som radene er rangert. I vårt eksempel bruker vi den stigende rekkefølgen basert på verdien av lønnskolonnen.

Funksjonen tildeler deretter raden med den laveste lønnen en rangering på 1 og den høyeste lønnsrangering av n, der n representerer antall rader i tabellen.

Som du kanskje legger merke til, tildeles radene med lignende lønnsverdier samme rangering.

Eksempel 2: Bruke rangfunksjonen med orden etter klausul

Anta at vi ønsker å gruppere radene basert på JOB_ID og deretter tildele en rang til radene i hver partisjon.

Vi kan utføre en spørring som vist i følgende:

Velg First_Name, Last_name, Lønn, JOB_ID, Rank () over (
Partisjon av JOB_ID
Bestill etter lønn ASC
) Som rang
Fra ansatte EMP;

Partisjonen etter klausul deler radene fra ansattes bord i de forskjellige gruppene basert på JOB_ID -kolonnen.

Rangeringsfunksjonen tildeler deretter en rangering til hver rad i hver partisjon med den laveste lønnen i hver partisjon som mottar en rangering på 1 og den høyeste lønnen i hver partisjon som mottar en rangering av n (der n er antall rader i partisjonen).

Resultat:

Konklusjon

I denne opplæringen lærte du hvordan du bruker Oracle's Rank () -funksjon. Selv om rang () -funksjonen kan være fordelaktig, kan det føre til en ytelseshit, spesielt når du jobber med komplekse spørsmål og store datasett.