- A módszerek mindig Over () záradékkal működnek.
- Időrendben minden sorhoz rangot rendelnek.
- A ORDER BY függvényében a függvények sorokat rendelnek minden sorhoz.
- Úgy tűnik, hogy a sorok mindig rangot kapnak, kezdve minden új partícióhoz tartozóval.
Összesen háromféle rangsorolási funkció létezik, az alábbiak szerint:
- Rang
- Sűrű rang
- Százalékos rang
MySQL RANK ():
Ez egy módszer, amely rangot ad a partíción vagy az eredménytömbön belül val vel rések soronként. Időrend szerint a sorok rangsorolása nem kerül felosztásra állandóan (azaz.e., eggyel nőtt az előző sorból). Még akkor is, ha több érték között döntetlen van, a rang () segédprogram ugyanezt a rangsort alkalmazza rá. Előző rangja plusz az ismételt számok száma lehet a következő rangszám.
A rangsorolás megértéséhez nyissa meg a parancssori ügyfélhéjat, és írja be MySQL jelszavát a használat megkezdéséhez.
Tegyük fel, hogy van egy „ugyanaz” nevű táblázat egy adatbázis „adatok” részén, néhány rekorddal.
>> SELECT * FROM adatok.azonos;
01. példa: Egyszerű RANK ()
Az alábbiakban a Rang függvényt használtuk a SELECT parancsban. Ez a lekérdezés az „azonos” oszlopból választja ki az „id” oszlopot, miközben az „id” oszlop szerint rangsorolja. Amint láthatja, a rangsor oszlopnak nevet adtunk, ami „saját_rang”. A rangsor mostantól ebben az oszlopban lesz tárolva, az alábbiak szerint.
>> SELECT id, RANK () OVER (ORDER BY id) my_rank FROM fata.azonos;
02. példa: RANK () a PARTITION használatával
Tegyünk fel egy másik „alkalmazott” táblázatot az adatbázis „adataiban” a következő rekordokkal. Legyen egy másik példányunk, amely felosztja az eredményhalmazt szegmensekre.
>> SELECT * FROM adatok.munkavállaló;
A RANK () metódus elfogyasztásához a következő utasítás minden sorhoz hozzárendeli a rangot, és az eredményt partíciókra osztja az „Élet” felhasználásával és a „Fizetés” függvényében rendezéssel. Ez a lekérdezés az összes rekordot lekérte, miközben az „új_rang” oszlopban rangsorolt. A lekérdezés kimenetét alább láthatja. A táblázatot „Fizetés” szerint rendezte, és „Kor” szerint osztotta fel.
>> KIVÁLASZTÁS *, RANK () TELJES (FELOSZTÁS Életkor szerinti rendezés szerint Fizetés alapján) new_rank.munkavállaló;
MySQL DENSE_Rank ():
Ez egy olyan funkció, ahol, lyukak nélkül, meghatároz egy rangot minden osztáson vagy eredményhalmazon belül. A sorok rangsorolását leggyakrabban egymás után rendezik. Időnként van egy bekötés az értékek között, és ezért a sűrű rang a pontos ranghoz rendeli, és az azt követő rang a következő következő szám.
01. példa: Egyszerű DENSE_RANK ()
Tegyük fel, hogy van egy „alkalmazott” tábla, és a „Név” és a „Fizetés” oszlopokat a „Név” oszlop szerint kell rangsorolni. Létrehoztunk egy új „dens_Rank” oszlopot, amely tárolja benne a rekordok minősítését. Az alábbi lekérdezés végrehajtása után a következő eredményeket kapjuk, az összes értéktől eltérő rangsorolással.
>> SELECT Név, fizetés, DENSE_RANK () OVER (ORDER BY Name) dens_rank FROM adatok.munkavállaló;
02. példa: DENSE_RANK () a PARTITION használatával
Lássunk egy másik példányt, amely az eredménykészletet szegmensekre bontja. Az alábbi szintaxis szerint a PARTITION BY kifejezéssel particionált kapott halmazt a FROM utasítás adja vissza, majd a DENSE_RANK () metódust minden szakaszra bekenjük a „Name” oszlop segítségével. Ezután az egyes szegmenseknél az ORDER BY kifejezés elkenődik, hogy meghatározza a sorok imperatívumát az „Élet” oszlop segítségével.
>> KIVÁLASZTÁS Név, Kor, Fizetés, DENSE_RANK () TÖBB (PARTITION BY Name ORDER Age szerint) new_rANK FROM adatok.munkavállaló;A fenti lekérdezés végrehajtása után láthatja, hogy nagyon egyértelmű eredményünk van, összehasonlítva a fenti példában szereplő Single dense_rank () módszerrel. Minden sorértékhez ugyanazt az ismételt értéket kaptuk, amint az alább látható. Ez a rangértékek kapcsolata.
MySQL PERCENT_RANK ():
Ez valóban egy százalékos rangsorolási (összehasonlító rang) módszer, amely kiszámítja a partíción vagy az eredménygyűjteményen belüli sorokat. Ez a módszer visszaad egy listát egy nullától 1-ig terjedő skálán.
01. példa: Egyszerű PERCENT_RANK ()
Az „alkalmazott” táblázat segítségével megvizsgáltuk az egyszerű PERCENT_RANK () módszer példáját. Erre van egy alábbi lekérdezésünk. A per_rank oszlopot a PERCENT_Rank () módszerrel állítottuk elő a százalékos formában rangsorolt eredmény érdekében. Az adatokat az „Életkor” oszlop rendezési sorrendje szerint hoztuk le, majd rangsoroltuk az értékeket ebből a táblázatból. Ennek a példának a lekérdezési eredménye százalékos rangsort adott nekünk az alábbi képen bemutatott értékekhez.
>> KIVÁLASZTÁS *, PERCENT_RANK () TÖBB (ÉRTESÍTÉS ÉLETBEN) per_rank FROM adatok.munkavállaló;
02. példa: PERCENT_RANK () a PARTITION használatával
Miután elvégezte a PERCENT_RANK () egyszerű példáját, itt a sor a „PARTITION BY” záradékra. Ugyanazt a táblázatot használtuk „alkalmazott”. Vessünk egy újabb bepillantást egy másik példányba, amely részekre bontja az eredményhalmazt. Az alábbi szintaxisból adódóan a PARTITION BY kifejezés által kapott eredményfalat a FROM deklaráció téríti meg, majd a PERCENT_RANK () metódust alkalmazzák az egyes sorok rangsorolásához a „Név” oszlopban. Az alábbi képen látható, hogy az eredménykészlet csak 0 és 1 értéket tartalmaz.
>> KIVÁLASZTÁS *, PERCENT_RANK () TELJES (FELOSZTÁS Fizetési RENDELÉS NÉVBEN) Per_rank FROM adatok.munkavállaló;
Következtetés:
Végül elvégeztük mindhárom rangsorolási funkciót a MySQL-ben használt sorokhoz, a MySQL parancssori klienshéjon keresztül. Vizsgálatunk során figyelembe vettük mind az egyszerű, mind a PARTITION BY záradékot.