MySQL MariaDB

Vensterfunctie MySQL RANK

Vensterfunctie MySQL RANK
De Ranking-methode wijst een rang binnen de partitie van een uitkomst van een set toe aan elke rij. De rangorde van een rij wordt bepaald door één cijfer van rangen te verhogen vanaf de rij die eraan voorafgaat. MySQL maakt gebruik van een rangschikkingsfunctie die één rangorde per rij in een schemapartitie helpt. In MySQL zijn de beoordelingsmethoden inderdaad een semi-onderdeel van de venstermethode. U gebruikt de beoordelingsmethoden in MySQL met de volgende clausules:

In totaal zijn er drie soorten rangschikkingsfuncties, namelijk:

MySQL-RANG():

Dit is een methode die een rang geeft binnen een partitie of uitkomstmatrix met hiaten per rij. Chronologisch wordt de rangorde van rijen niet altijd toegewezen (i.e., verhoogd met één van de vorige rij). Zelfs als je een gelijkspel hebt tussen verschillende waarden, past het hulpprogramma rank() op dat moment dezelfde rangorde toe. Ook kan zijn eerdere rang plus een cijfer van herhaalde getallen het volgende rangnummer zijn.

Om de rangorde te begrijpen, opent u de opdrachtregelclientshell en typt u uw MySQL-wachtwoord om het te gebruiken.

Stel dat we een onderstaande tabel hebben met de naam "hetzelfde" in een database "gegevens", met enkele records.

>> KIES * UIT gegevens.dezelfde;

Voorbeeld 01: Eenvoudige RANK()

Hieronder hebben we de Rank-functie gebruikt binnen de SELECT-opdracht:. Deze query selecteert de kolom "id" uit de tabel "hetzelfde" en rangschikt deze volgens de kolom "id". Zoals u kunt zien, hebben we de rangordekolom een ​​naam gegeven, namelijk "my_rank". De rangorde wordt nu in deze kolom opgeslagen, zoals hieronder weergegeven.

>> SELECT id, RANK() OVER (ORDER BY id) my_rank FROM fata.dezelfde;

Voorbeeld 02: RANK() met behulp van PARTITION

Neem een ​​andere tabel "werknemer" in een database "gegevens" met de volgende records:. Laten we nog een instantie hebben die de resultaatset in segmenten splitst.

>> KIES * UIT gegevens.werknemer;

Om de RANK()-methode te gebruiken, wijst de volgende instructie de rangorde toe aan elke rij en verdeelt de uitkomstset in partities met behulp van "Leeftijd" en sorteert ze afhankelijk van "Salaris". Deze zoekopdracht heeft alle records opgehaald terwijl ze in een kolom "new_rank" werden gerangschikt. U kunt de uitvoer van deze query hieronder zien:. Het heeft de tabel gesorteerd op "Salaris" en verdeeld op "Leeftijd".

>> SELECTEER *, RANG() BOVEN(VERDELING OP Leeftijd ORDER OP Salaris) new_rank FROM data.werknemer;

MySQL DENSE_Rank():

Dit is een functionaliteit waarbij:, zonder gaten, bepaalt een rangorde voor elke rij binnen een divisie of resultatenset. De rangorde van rijen wordt meestal in sequentiële volgorde toegewezen. Soms heb je een gelijkspel tussen waarden, en daarom wordt het toegewezen aan de exacte rang door de dichte rang, en de volgende rang is het volgende volgende nummer.

Voorbeeld 01: Eenvoudige DENSE_RANK()

Stel dat we een tabel "werknemer" hebben en u moet de tabelkolommen "Naam" en "Salaris" rangschikken volgens de kolom "Naam". We hebben een nieuwe kolom "dens_Rank" gemaakt om de beoordeling van de records erin op te slaan. Bij het uitvoeren van de onderstaande query hebben we de volgende resultaten met een andere rangorde dan alle waarden:.

>> SELECT Naam, Salaris, DENSE_RANK() OVER( ORDER BY Name) dens_rank FROM data.werknemer;

Voorbeeld 02: DENSE_RANK() met PARTITION

Laten we een ander exemplaar bekijken dat de uitkomstset in segmenten splitst. Volgens de onderstaande syntaxis wordt de resulterende set gepartitioneerd door de PARTITION BY-zin geretourneerd door de FROM-instructie, en de DENSE_RANK()-methode wordt vervolgens uitgesmeerd naar elke sectie met behulp van de kolom "Naam". Vervolgens wordt voor elk segment de ORDER BY-zin uitgesmeerd om de imperatief van de rijen te bepalen met behulp van de kolom "Leeftijd".

>> SELECT Naam, Leeftijd, Salaris, DENSE_RANK() OVER(PARTITION BY Name ORDER BY Age) new_rank FROM data.werknemer;

Bij het uitvoeren van de bovenstaande query, kunt u zien dat we een zeer duidelijk resultaat hebben in vergelijking met de methode Single density_rank() in het bovenstaande voorbeeld. We hebben dezelfde herhaalde waarde voor elke rijwaarde, zoals je hieronder kunt zien. Het is de band van rangwaarden.

MySQL PERCENT_RANK():

Het is inderdaad een methode met een percentagerangschikking (vergelijkende rangorde) die berekent voor rijen binnen een partitie of uitkomstverzameling. Deze methode retourneert een lijst van een waardeschaal van nul tot 1.

Voorbeeld 01: Eenvoudig PERCENT_RANK()

Met behulp van de tabel "employee", hebben we gekeken naar het voorbeeld van de eenvoudige PERCENT_RANK() methode. We hebben hiervoor een onderstaande vraag:. De kolom per_rank is gegenereerd door de PERCENT_Rank()-methode om de resultaatset in het percentageformulier te rangschikken. We hebben de gegevens opgehaald volgens de sorteervolgorde van kolom "Leeftijd" en vervolgens hebben we de waarden uit deze tabel gerangschikt. Het zoekresultaat voor dit voorbeeld gaf ons een percentagerangschikking voor de waarden zoals weergegeven in de onderstaande afbeelding.

>> SELECT *, PERCENT_RANK() OVER(ORDER BY Age) per_rank VAN gegevens.werknemer;

Voorbeeld 02: PERCENT_RANK() met PARTITION

Na het eenvoudige voorbeeld van PERCENT_RANK(), is het nu de beurt aan de clausule "PARTITION BY". We hebben dezelfde tabel "werknemer" gebruikt. Laten we nog een glimp opvangen van een andere instantie die de resultatenset in secties splitst. Gegeven uit de onderstaande syntaxis, wordt de resulterende set wall-off door de PARTITION BY-expressie terugbetaald door de FROM-declaratie, evenals de PERCENT_RANK()-methode wordt vervolgens gebruikt om elke rijvolgorde te rangschikken op de kolom "Naam". In de onderstaande afbeelding kunt u zien dat de resultatenset alleen 0 en 1 waarden bevat.

>> SELECT *, PERCENT_RANK() OVER(PARTITIE OP Salaris ORDER OP Naam) per_rank VAN gegevens.werknemer;

Conclusie:

Ten slotte hebben we alle drie de rangschikkingsfuncties gedaan voor rijen die in MySQL worden gebruikt, via de MySQL-opdrachtregelclientshell. We hebben ook rekening gehouden met zowel de eenvoudige als de PARTITION BY-clausule in onze studie.

Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...
Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...
Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...