MySQL MariaDB

MySQL RANK Window-funksjon

MySQL RANK Window-funksjon
Rangering-metoden tildeler en rang i partisjonen til et utfall av et sett til hver rad. En rads rang bestemmes ved å øke en rangrekke fra raden som går foran den. MySQL benytter 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 punktene:

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

MySQL RANK ():

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

For å forstå rangering, åpne kommandolinjeklientskallet og skriv inn MySQL-passordet 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 Rank-funksjonen i SELECT-kommandoen. Dette spørsmålet velger kolonnen "id" fra tabellen "samme" mens den rangeres i henhold til kolonnen "id". Som du ser, har vi gitt rangeringskolonnen et navn, som er "min_rang". Rangeringen vil nå bli lagret i denne kolonnen, som vist nedenfor.

>> VELG id, RANG () OVER (BESTILL AV ID) min_rang FRA fata.samme;

Eksempel 02: RANG () ved bruk av PARTITION

Anta en annen tabell "ansatt" i en database "data" med følgende poster. La oss ha en annen forekomst som deler resultatsettet opp i segmenter.

>> VELG * FRA data.ansatt;

For å konsumere RANK () -metoden, tildeler den påfølgende instruksjonen rangeringen til hver rad og deler utfallssettet i partisjoner ved å bruke "Alder" og sortere dem avhengig av "Lønn". Dette spørsmålet har hentet alle postene mens det er rangert i en kolonne "new_rank". Du kan se resultatet av dette spørsmålet nedenfor. Den har sortert tabellen i henhold til "Lønn" og delt den i henhold til "Alder".

>> VELG *, RANG () OVER (DELING Etter aldersbestilling etter lønn) new_rank FRA data.ansatt;

MySQL DENSE_Rank ():

Dette er en funksjonalitet der, uten hull, bestemmer en rangering per hver rad i en divisjon eller et resultatsett. Rangeringen av rader fordeles oftest i sekvensiell rekkefølge. Noen ganger har du en tilknytning mellom verdiene, og derfor tildeles den den nøyaktige rangeringen av den tette rangeringen, og den påfølgende rangeringen er neste nummer.

Eksempel 01: Enkel DENSE_RANK ()

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

>> VELG navn, lønn, DENSE_RANK () OVER (BESTILL AV Navn) dens_rank FRA data.ansatt;

Eksempel 02: DENSE_RANK () Bruker PARTITION

La oss se en annen forekomst som deler resultatutvalget i segmenter. I henhold til syntaksen nedenfor returneres det resulterende settet som er partisjonert av setningen PARTITION BY fra FROM-setningen, og DENSE_RANK () -metoden blir deretter smurt til hver seksjon ved hjelp av kolonnen "Navn". Så, for hvert segment, smelter ORDER BY-setningen for å bestemme radene som er viktig ved å bruke kolonnen "Alder".

>> VELG Navn, Alder, Lønn, DENSE_RANK () OVER (PARTITION BY Name ORDER BY Age) new_rank FROM data.ansatt;

Når du utfører spørringen ovenfor, kan du se at vi har et veldig tydelig resultat sammenlignet med Single dense_rank () -metoden i eksemplet ovenfor. Vi har samme gjentatte verdi for hver radverdi, som du kan se nedenfor. Det er uavgjort av rangverdier.

MySQL PERCENT_RANK ():

Det er virkelig en prosentvis rangering (komparativ rang) -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 PERCENT_RANK ()

Ved å bruke tabellen "ansatt" har vi sett på eksemplet på den enkle PERCENT_RANK () metoden. Vi har en gitt spørring nedenfor for dette. Per_rank-kolonnen er generert av PERCENT_Rank () -metoden for å rangere resultatsettet i prosentform. Vi har hentet dataene i henhold til sorteringsrekkefølgen for kolonnen "Alder", og deretter har vi rangert verdiene fra denne tabellen. Spørreresultatet for dette eksemplet ga oss en prosentvis rangering for verdiene som er presentert i bildet nedenfor.

>> SELECT *, PERCENT_RANK () OVER (ORDER BY Age) per_rank FROM data.ansatt;

Eksempel 02: PERCENT_RANK () Bruker PARTITION

Etter å ha gjort det enkle eksemplet på PERCENT_RANK (), er det nå turen til "PARTITION BY" -klausulen. Vi har brukt den samme tabellen "ansatt". La oss få et nytt glimt av en annen forekomst som deler resultatsettet inn i seksjoner. Gitt fra nedenstående syntaks, blir den resulterende nedlagte veggen av PARTITION BY-uttrykket refundert av FROM-erklæringen, samt PERCENT_RANK () -metoden blir deretter brukt til å rangere hver radrekkefølge etter kolonnen "Navn". På bildet som vises nedenfor, kan du se at resultatsettet bare inneholder 0 og 1 verdier.

>> VELG *, PERCENT_RANK () OVER (DELING PER LØN ORDER PÅ Navn) per_rank FRA data.ansatt;

Konklusjon:

Til slutt har vi gjort alle tre rangeringsfunksjonene for rader som brukes i MySQL, via MySQL-kommandolinjeklientskallet. Vi har også tatt hensyn til både den enkle og PARTITION BY-ledd i studien vår.

Beste spill å spille med håndsporing
Oculus Quest introduserte nylig den gode ideen om håndsporing uten kontrollere. Med et stadig økende antall spill og aktiviteter som utfører støtte en...
Hvordan vise OSD-overlegg i fullskjerm Linux-apper og spill
Å spille fullskjermspill eller bruke apper i distraksjonsfri fullskjermmodus kan avskrekke deg fra relevant systeminformasjon som er synlig i et panel...
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...