MySQL MariaDB

MySQL RANK-fönsterfunktion

MySQL RANK-fönsterfunktion
Rankningsmetoden tilldelar en rad inuti partitionen av ett resultat av en uppsättning till varje rad. En rads rang bestäms genom att öka en siffersiffror från raden som föregår den. MySQL använder en rankningsfunktion som hjälper en rangordning per rad i en schemapartition. I MySQL är klassificeringsmetoderna verkligen en halvdel av fönstermetoden. Du kommer att använda klassificeringsmetoderna i MySQL med antingen de efterföljande klausulerna:

Totalt finns det tre typer av rankningsfunktioner, enligt följande:

MySQL RANK ():

Detta är en metod som ger en rankning i en partition eller utkomstmatris med luckor per rad. Kronologiskt fördelas inte rankningen av rader hela tiden (i.e., ökat med en från föregående rad). Även när du har en oavgjort mellan flera av värdena, vid den punkten, använder rang () verktyget samma rangordning på det. Dess tidigare rankning plus en siffra med upprepade nummer kan också vara det efterföljande rangnumret.

För att förstå rankning, öppna kommandoradsklienten och skriv ditt MySQL-lösenord för att börja använda det.

Antag att vi har nedanstående tabell med namnet "samma" i en databas "data", med några poster.

>> VÄLJ * FRÅN data.samma;

Exempel 01: Simple RANK ()

Nedan har vi använt Rank-funktionen i SELECT-kommandot. Denna fråga väljer kolumnen "id" från tabellen "samma" medan den rangordnas enligt kolumnen "id". Som du kan se har vi gett rankningskolumnen ett namn som är "min_rank". Rankningen kommer nu att sparas i den här kolumnen, som visas nedan.

>> VÄLJ id, RANK () ÖVER (BESTÄLL EFTER id) min_rank FRÅN fata.samma;

Exempel 02: RANK () Använd PARTITION

Anta en annan tabell "anställd" i en databas "data" med följande poster. Låt oss ha en annan instans som delar upp resultatuppsättningen i segment.

>> VÄLJ * FRÅN data.anställd;

För att konsumera RANK () -metoden tilldelar den efterföljande instruktionen rankningen till varje rad och delar ut resultatet i partitioner med "Ålder" och sorterar dem beroende på "Lön". Den här frågan har hämtat alla poster medan den rankats i en kolumn "new_rank". Du kan se resultatet av denna fråga nedan. Den har sorterat tabellen efter “Lön” och delat den efter “Ålder”.

>> VÄLJ *, RANG () ÖVER (DELNING PÅ ÅlderBESTÄLLNING EFTER Lön) new_rank FRÅN data.anställd;

MySQL DENSE_Rank ():

Detta är en funktion där, utan hål, bestämmer en rankning per varje rad i en division eller resultatuppsättning. Rangeringen av rader tilldelas oftast i sekventiell ordning. Ibland har du en koppling mellan värdena, och därför tilldelas den den exakta rangordningen av den täta raden, och dess efterföljande rang är nästa efterföljande nummer.

Exempel 01: Enkel DENSE_RANK ()

Anta att vi har en tabell "anställd", och du måste rangordna tabellkolumnerna, "Namn" och "Lön" enligt kolumnen "Namn". Vi har skapat en ny kolumn "dens_Rank" för att lagra klassificeringen av posterna i den. När vi utför frågan nedan har vi följande resultat med olika rangordning till alla värden.

>> VÄLJ Namn, lön, DENSE_RANK () OVER (BESTÄLL EFTER namn) dens_rank FRÅN data.anställd;

Exempel 02: DENSE_RANK () använder PARTITION

Låt oss se en annan instans som delar ut resultatet i segment. Enligt syntaxen nedan returneras den resulterande uppsättningen som partitioneras av PARTITION BY-frasen av FROM-satsen och DENSE_RANK () -metoden smutsas ut till varje sektion med kolumnen "Namn". Sedan, för varje segment, suddas ORDER BY-frasen ut för att bestämma radernas tvingande med kolumnen "Ålder".

>> VÄLJ Namn, ålder, lön, DENSE_RANK () ÖVER (DELNING PÅ Namn BESTÄLLNING Ålder) new_rank FRÅN data.anställd;

När du kör ovanstående fråga kan du se att vi har ett mycket tydligt resultat jämfört med metoden Single dense_rank () i exemplet ovan. Vi har samma upprepade värde för varje radvärde, som du kan se nedan. Det är bandet mellan rangvärden.

MySQL PERCENT_RANK ():

Det är verkligen en procentsats (jämförande rang) -metod som beräknar rader i en partition eller utfallssamling. Den här metoden returnerar en lista från antingen en värdeskala från noll till 1.

Exempel 01: Enkel PERCENT_RANK ()

Med hjälp av tabellen "anställd" har vi tittat på exemplet på den enkla PERCENT_RANK () -metoden. Vi har en given fråga nedan för detta. Kolumnen per_rank har genererats av metoden PERCENT_Rank () för att rangordna resultatuppsättningen i procentformuläret. Vi har hämtat data enligt sorteringsordningen för kolumnen "Ålder" och sedan har vi rangordnat värdena från denna tabell. Frågeresultatet för detta exempel gav oss en procentuell rangordning för värdena som visas i bilden nedan.

>> VÄLJ *, PERCENT_RANK () OVER (BESTÄLL EFTER ålder) per_rank FRÅN data.anställd;

Exempel 02: PERCENT_RANK () Använd PARTITION

Efter att ha gjort det enkla exemplet på PERCENT_RANK (), är det nu turen till "PARTITION BY" -satsen. Vi har använt samma tabell "anställd". Låt oss få en annan glimt av en annan instans som delar upp resultatuppsättningen i sektioner. Med tanke på nedanstående syntax ersätts den resulterande uppsatta väggen av PARTITION BY-uttrycket av FROM-deklarationen, såväl som PERCENT_RANK () -metoden används sedan för att rangordna varje radordning med kolumnen "Namn". I bilden som visas nedan kan du se att resultatuppsättningen endast innehåller 0 och 1 värden.

>> VÄLJ *, PERCENT_RANK () ÖVER (DELNING PER LÖN BESTÄLLNING AV Namn) per_rank FRÅN data.anställd;

Slutsats:

Slutligen har vi gjort alla tre rankningsfunktionerna för rader som används i MySQL, via MySQL-kommandoradsklienten. Vi har också tagit hänsyn till både den enkla och PARTITION BY-klausulen i vår studie.

Bästa Linux Distros för spel 2021
Linux-operativsystemet har kommit långt från sitt ursprungliga, enkla, serverbaserade utseende. Detta operativsystem har förbättrats enormt de senaste...
Hur du fångar och strömmar din spelsession på Linux
Tidigare betraktades spel bara som en hobby, men med tiden såg spelindustrin en enorm tillväxt när det gäller teknik och antalet spelare. Spelpubliken...
Bästa spel att spela med handspårning
Oculus Quest introducerade nyligen den fantastiska idén om handspårning utan kontroller. Med ett ständigt ökande antal spel och aktiviteter som utför ...