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 (Funksjonen støtter følgende parametere:
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 rangeringI 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 (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.