MySQL MariaDB

MySQL RANK-vinduesfunktion

MySQL RANK-vinduesfunktion
Ranking-metoden tildeler en rang inden i partitionen af ​​et resultat af et sæt til hver række. En række rang bestemmes ved at øge en række rækker fra den række, der går forud for den. MySQL bruger en rangfunktion, der hjælper en rang pr. Række i en skema-partition. I MySQL er vurderingsmetoderne faktisk en halvdel af vinduesmetoden. Du bruger vurderingsmetoderne i MySQL med enten de efterfølgende klausuler:

I alt er der tre slags rangfunktioner som følger:

MySQL RANK ():

Dette er en metode, der giver en rang inden i en partition eller et resultatarray med huller pr. række. Kronologisk tildeles ikke rangeringen af ​​rækker hele tiden (i.e., steget med en fra forrige række). Selv når du har uafgjort mellem flere af værdierne, på det tidspunkt, anvender rang () -værktøjet den samme placering på det. Også dets tidligere rang plus et tal med gentagne tal kan være det efterfølgende rangnummer.

For at forstå placeringen skal du åbne kommandolinjeklientshallen og skrive din MySQL-adgangskode for at begynde at bruge den.

Antag, at vi har nedenstående tabel med navnet "samme" i en database "data" med nogle poster.

>> VÆLG * FRA data.samme;

Eksempel 01: Simple RANK ()

Nedenfor har vi brugt Rank-funktionen i kommandoen SELECT. Denne forespørgsel vælger kolonnen "id" fra tabellen "samme", mens den rangeres efter kolonnen "id". Som du kan se, har vi givet rangkolonnen et navn, som er "min_rank". Rangeringen gemmes nu i denne kolonne som vist nedenfor.

>> VÆLG id, RANG () OVER (BESTIL EFTER id) min_rank FRA fata.samme;

Eksempel 02: RANK () Brug af PARTITION

Antag en anden tabel "medarbejder" i en database "data" med følgende poster. Lad os have en anden forekomst, der opdeler resultatsættet i segmenter.

>> VÆLG * FRA data.medarbejder

For at forbruge RANK () -metoden tildeler den efterfølgende instruktion rang til hver række og opdeler udfaldssættet i partitioner ved hjælp af "Alder" og sortering afhængigt af "Løn". Denne forespørgsel har hentet alle poster, mens den er placeret i en kolonne "new_rank". Du kan se output fra denne forespørgsel nedenfor. Det har sorteret tabellen efter “Løn” og opdelt den efter “Alder”.

>> VÆLG *, RANG () OVER (DELNING EFTER ALDERORDNING EFTER Løn) new_rank FRA data.medarbejder

MySQL DENSE_Rank ():

Dette er en funktionalitet, hvor, uden huller, bestemmer en rang pr. række i en division eller et resultatsæt. Rangeringen af ​​rækker fordeles oftest i rækkefølge. Til tider har du en binding mellem værdier, og derfor tildeles den den nøjagtige rang af den tætte rang, og den efterfølgende rang er det næste efterfølgende nummer.

Eksempel 01: Enkel DENSE_RANK ()

Antag, at vi har en tabel "medarbejder", og at du skal rangere tabelkolonnerne, "Navn" og "Løn" i henhold til kolonnen "Navn". Vi har oprettet en ny kolonne "dens_Rank" til at gemme klassificeringen af ​​posterne i den. Efter udførelsen af ​​nedenstående forespørgsel har vi følgende resultater med forskellige rangordninger til alle værdier.

>> VÆLG navn, løn, DENSE_RANK () OVER (BESTIL EFTER navn) dens_rank FRA data.medarbejder

Eksempel 02: DENSE_RANK () Brug af PARTITION

Lad os se en anden forekomst, der opdeler udfaldssættet i segmenter. I henhold til nedenstående syntaks returneres det resulterende sæt opdelt af PARTITION BY-sætningen med FROM-sætningen, og DENSE_RANK () -metoden udtværes derefter til hvert afsnit ved hjælp af kolonnen "Navn". Derefter for hvert segment udtværes ORDER BY-sætningen for at bestemme rækkernes imperativ ved hjælp af kolonnen "Alder".

>> VÆLG Navn, Alder, Løn, DENSE_RANK () OVER (DELING EFTER Navn ORDRE EFTER Alder) new_rank FRA data.medarbejder

Ved udførelse af ovenstående forespørgsel kan du se, at vi har et meget tydeligt resultat sammenlignet med metoden Single dense_rank () i ovenstående eksempel. Vi har den samme gentagne værdi for hver rækkeværdi, som du kan se nedenfor. Det er båndet mellem rangværdier.

MySQL PERCENT_RANK ():

Det er faktisk en procentvis rangordning (komparativ rang) -metode, der beregner rækker inde i en partition eller udfaldssamling. Denne metode returnerer en liste fra enten en værdiskala på nul til 1.

Eksempel 01: Enkel PERCENT_RANK ()

Ved hjælp af tabellen "medarbejder" har vi set på eksemplet på den enkle PERCENT_RANK () metode. Vi har en nedenstående forespørgsel om dette. Kolonnen per_rank er genereret ved hjælp af PERCENT_Rank () -metoden for at rangere resultatsættet i procentformularen. Vi har hentet dataene efter sorteringsrækkefølgen for kolonne "Alder", og så har vi rangordnet værdierne fra denne tabel. Forespørgselsresultatet for dette eksempel gav os en procentvis rangordning for værdierne som vist i billedet nedenfor.

>> VÆLG *, PERCENT_RANK () OVER (BESTIL EFTER Alder) pr. Rang FRA data.medarbejder

Eksempel 02: PERCENT_RANK () Brug af PARTITION

Efter at have udført det enkle eksempel på PERCENT_RANK (), er det nu turen til "PARTITION BY" -klausulen. Vi har brugt den samme tabel "medarbejder". Lad os få endnu et glimt af en anden forekomst, der opdeler resultatsættet i sektioner. Givet fra nedenstående syntaks, refunderes den resulterende indstillede væg af PARTITION BY-udtrykket med FROM-erklæringen, såvel som PERCENT_RANK () -metoden bruges derefter til at rangordne hver rækkefølge efter kolonnen "Navn". På billedet vist nedenfor kan du se, at resultatsættet kun indeholder 0 og 1 værdier.

>> VÆLG *, PERCENT_RANK () OVER (DELING EFTER LønORDNING EFTER navn) pr. Rang FRA data.medarbejder

Konklusion:

Endelig har vi udført alle tre placeringsfunktioner for rækker, der bruges i MySQL, via MySQL-kommandolinjeklientshallen. Vi har også taget hensyn til både den enkle og PARTITION BY-klausulen i vores undersøgelse.

Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...
Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...
Top 5 spiloptagelseskort
Vi har alle set og elsket streaming af gameplay på YouTube. PewDiePie, Jakesepticye og Markiplier er kun nogle af de bedste spillere, der har tjent mi...