MySQL Rank Window Function

MySQL Rank Window Function
Rangeringsmetoden tildeler en rangering i partisjonen av et resultat av et sett til hver rad. En rads rang bestemmes ved å øke ett figur av rangeringer fra raden som går foran den. MySQL bruker en rangeringsfunksjon som hjelper en rangering per rad i en skjemapartisjon. I MySQL er vurderingsmetodene faktisk en halvdel av vindusmetoden. Du vil bruke vurderingsmetodene i MySQL med enten de påfølgende klausulene:
  • Metodene fungerer alltid med en over () -klausul.
  • I kronologisk rekkefølge tildeler de hver rad en rangering.
  • Avhengig av bestillingen av, tildeler funksjonene en rangering til hver rad.
  • Rader ser alltid ut til å ha en rangering tildelt dem, som begynner med en for hver nye partisjon.

Totalt er det tre typer rangeringsfunksjoner, som følger:

  • Rang
  • Tett rang
  • Prosent rangering

MySQL Rank ():

Dette er en metode som gir en rangering i en partisjon eller utfallsarray med hull per rad. Kronologisk tildeles rangeringen av rader ikke hele tiden (i.e., økt med en fra forrige rad). Selv når du har et slips mellom flere av verdiene, bruker Rank () verktøyet den samme rangeringen på det. Dessuten kan den tidligere rangering pluss et tall med gjentatte tall være det påfølgende rangeringsnummeret.

For å forstå rangering, åpner du kommandolinjens klientskall og skriv MySQL-passordet ditt for å begynne å bruke det.

Anta at vi har en tabell nedenfor som heter “Samme” i en database “Data”, med noen poster.

>> Velg * fra data.samme;

Eksempel 01: Enkel rangering ()

Nedenfor har vi brukt rangfunksjonen i SELECT -kommandoen. Denne spørringen velger kolonnen “ID” fra tabellen “Samme” mens du rangerer den i henhold til kolonnen “ID”. Som du ser, har vi gitt rangeringskolonnen et navn, som er "my_rank". Rangeringen vil nå bli lagret i denne kolonnen, som vist nedenfor.

>> velg id, rang () over (bestill etter id) my_rank fra fata.samme;

Eksempel 02: Rank () ved hjelp av partisjon

Anta at en annen tabell "ansatt" i en database "data" med følgende poster. La oss få en annen forekomst som deler resultatet satt inn i segmenter.

>> Velg * fra data.ansatt;

For å konsumere Rank () -metoden, tildeler den påfølgende instruksjonen rangering til hver rad og deler ut resultatet som er satt i partisjoner som bruker "alder" og sorterer dem avhengig av "lønn". Denne spørringen har hentet alle postene mens de rangerer i en kolonne “new_rank”. Du kan se utdataene fra denne spørringen nedenfor. Den har sortert tabellen i henhold til "lønn" og delt den i henhold til "alder".

>> velg *, rang () over (partisjon etter aldersordre etter lønn) new_rank fra data.ansatt;

MySQL DENSE_RANK ():

Dette er en funksjonalitet der, uten noen hull, bestemmer en rangering per hver rad i en divisjon eller resultatsett. Rangeringen av rader er ofte tildelt i sekvensiell rekkefølge. Noen ganger har du en binding mellom verdier, og derfor er den tildelt den nøyaktige rangering av den tette rangering, og dens påfølgende rang er det neste etterfølgende nummeret.

Eksempel 01: enkel tett_rank ()

Anta at vi har en tabell “ansatt”, og du må rangere tabellkolonnene, “Navn” og “Lønn” i henhold til kolonnen “Navn”. Vi har laget en ny kolonne “Dens_rank” for å lagre vurderingen av postene i den. Når vi utfører spørringen nedenfor, har vi følgende resultater med forskjellig rangering til alle verdier.

>> Velg navn, lønn, tette_rank () over (bestill etter navn) Dens_rank fra data.ansatt;

Eksempel 02: DENSE_RANK () ved hjelp av partisjon

La oss se en annen forekomst som deler ut resultatet satt i segmenter. I henhold til syntaksen nedenfor blir det resulterende sett som er partisjonert av partisjonen ved frasen returnert av FRA -setningen, og DENSE_RANK () -metoden blir deretter smurt til hver seksjon ved å bruke kolonnen "Navn". Deretter, for hvert segment, flekker rekkefølgen etter setningen å bestemme radenes imperativ ved å bruke kolonnen "alder".

>> velg navn, alder, lønn, tette_rank () over (partisjon etter navnordre etter alder) new_rank fra data.ansatt;

Når du utfører spørringen ovenfor, kan du se at vi har et veldig tydelig resultat sammenlignet med single tetse_rank () -metoden i eksemplet ovenfor. Vi har den samme gjentatte verdien for hver radverdi, som du kan se nedenfor. Det er rangeringsverdiene.

Mysql prosent_rank ():

Det er faktisk en prosentvis rangering (komparativ rangering) -metode som beregner for rader i en partisjon eller utfallssamling. Denne metoden returnerer en liste fra enten en verdiskala på null til 1.

Eksempel 01: enkel Prosent_rank ()

Ved å bruke tabellen "ansatt", har vi sett på eksemplet på metoden Simple Prosent_Rank (). Vi har en gitt nedenfor spørring for dette. PER_RANK -kolonnen er generert av Prosent_Rank () -metoden for å rangere resultatet satt i den prosentvise skjemaet. Vi har hentet dataene i henhold til sorteringsrekkefølgen på kolonnen "alder", og så har vi rangert verdiene fra denne tabellen. Spørringsresultatet for dette eksemplet ga oss en prosentvis rangering for verdiene som presentert i bildet nedenfor.

>> Velg *, Prosent_rank () over (bestilling etter alder) per_rank fra data.ansatt;

Eksempel 02: Prosent_rank () ved hjelp av partisjon

Etter å ha gjort det enkle eksemplet på Prosent_rank (), er det nå svingen for "Partition by" -klausulen. Vi har brukt den samme tabellen “ansatt”. La oss få et annet glimt av en annen forekomst som deler resultatet satt i seksjoner. Gitt fra syntaksen nedenfor, blir den resulterende setveggen av av partisjonen etter uttrykk refundert av FRA -erklæringen, så vel som Prosent_Rank () -metoden blir deretter brukt til å rangere hver radbestilling etter kolonnen "Navn". I bildet som vises nedenfor, kan du se resultatsettet bare inneholder 0 og 1 verdier.

>> Velg *, Prosent_rank () over (partisjon etter lønnsordre etter navn) per_rank fra data.ansatt;

Konklusjon:

Til slutt har vi gjort alle tre rangeringsfunksjonene for rader som ble brukt i MySQL, via MySQL Command-Line Client Shell. Vi har også tatt hensyn til både den enkle og partisjonen etter klausulen i vår studie.