az adatokon számításokat végzünk különböző összesített funkciókkal, például Max, Min és AVG. Egyetlen kimeneti sort kapunk ezekkel a funkciókkal. Az SQL Sever SQL RANK funkciókat biztosít az egyes mezők rangsorának megadásához a kategorizálások szerint. Minden egyes részt vevő sorhoz összesített értéket ad vissza. Az SQL RANK funkciók Ablakfüggvényekként is ismertek.
- Megjegyzés: A Windows kifejezés ebben nem vonatkozik a Microsoft Windows operációs rendszerre., Ezek SQL RANK funkciók.
a következő rangfunkciókkal rendelkezünk.
- ROW_NUMBER ()
- RANK ()
- DENSE_RANK ()
NTILE ()
az SQL RANK funkciókban az OVER () záradékot használjuk az eredménykészlet sorainak meghatározására. Az SQL partíciót záradék szerint is használhatjuk az adatok egy részhalmazának meghatározására egy partícióban. Az eredmények csökkenő vagy növekvő sorrendben történő rendezéséhez klauzula szerinti sorrendet is használhat.
mielőtt felfedeznénk ezeket az SQL RANK funkciókat, készítsünk minta adatokat., Ebben a mintaadatban három matematikai, tudományos és angol tantárgyból álló diák vizsgaeredményei vannak.
a Vizsgaeredeti táblázatban a következő mintaadatok találhatók.
használjuk minden SQL Rank funkciót a következő példákban.
ROW_Number () SQL RANK function
használjuk ROW_Number () SQL RANK funkció, hogy egy egyedi szekvenciális számot minden sorban a megadott adatokat. Ez adja a rangot az első sorban, majd növeli az értéket egy-egy sorban. Kapunk különböző soraiban a sorban, amelynek hasonló értékeket is.,
hajtsa végre a következő lekérdezést, hogy rangot kapjon a hallgatók számára a jelek szerint.,
1
2
3
4
5
|
SELECT Studentname,
Subject,
Marks,
ROW_NUMBER() OVER(ORDER BY Marks) RowNumber
FROM ExamResult;
|
By default, it sorts the data in ascending order and starts assigning ranks for each row., A fenti képernyőképen az 1. sorszámot kapjuk az 50 jelekhez.
meghatározhatjuk a csökkenő sorrendet klauzulával, és ennek megfelelően módosítja a rangot.,ae”>
1
2
3
4
5
|
SELECT Studentname,
Subject,
Marks,
ROW_NUMBER() OVER(ORDER BY Marks desc) RowNumber
FROM ExamResult;
|
RANK() SQL RANK Function
We use RANK() SQL Rank function to specify rank for each row in the result set., Három tantárgyból tanulunk. Szeretnénk rangsorolni az eredményt a diákok, mint egy a jelek a tantárgyak. Például a következő képernyőképen Isabella hallgató kapta a legmagasabb pontszámot az angol tantárgyban, a legalacsonyabb pontszámot pedig a matematika tantárgyban. A jelek szerint Isabella az első helyet kapja angolul, a 3. helyet pedig a matematika tárgyában.
hajtsa végre a következő lekérdezést, hogy megkapja ezt az eredménykészletet.,v id=”c5a1f1b829″>
1
2
3
4
5
6
7
|
SELECT Studentname,
Subject,
Marks,
RANK() OVER(PARTITION BY Studentname ORDER BY Marks DESC) Rank
FROM ExamResult
ORDER BY Studentname,
Rank;
|
Let’s execute the following query of SQL Rank function and look at the result set., Ebben a lekérdezésben nem adtuk meg az SQL partíciót záradék szerint, hogy az adatokat kisebb részhalmazra Osszuk. Az általunk használt SQL Rank funkció több mint záradék Marks záradék (csökkenő sorrendben), hogy soraiban a megfelelő sorok.,div id=”7d9d5b54ae”>
1
2
3
4
5
6
|
SELECT Studentname,
Subject,
Marks,
RANK() OVER(ORDER BY Marks DESC) Rank
FROM ExamResult
ORDER BY Rank;
|
In the output, we can see each student get rank as per their marks irrespective of the specific subject., A teljes eredményhalmaz legmagasabb és legalacsonyabb értéke például 90, illetve 50. Az eredményhirdetés során a legmagasabb pontszámot az 1. helyezés, a legalacsonyabb pedig a 9. helyezés kapja.
ha két diák ugyanazt a jelet kapja (példánkban a 4. és 5. sorszám), akkor soraik is azonosak.
DENSE_RANK() SQL RANK function
a DENSE_RANK() függvény segítségével megadunk egy egyedi rangszámot a partíción belül a megadott oszlopérték szerint. Hasonló a Rangfüggvényhez, kis különbséggel.,
az SQL RANK függvény DENSE_RANK (), ha van ismétlődő értékek, SQL rendel különböző soraiban, hogy ezeket a sorokat is. Ideális esetben ugyanazt a rangot kell kapnunk a duplikált vagy hasonló értékek esetében.
hajtsuk végre a következő lekérdezést a DENSE_RANK() funkcióval.,
1
2
3
4
5
6
|
VÁLASSZA ki Studentname,
Tárgy,
Jelek
DENSE_RANK() VÉGE(ORDER BY Marks DESC) Rang
A ExamResult
SORREND, rangsor szerint;
|
a kimenet, akkor láthatjuk, mi van azonos értékű mindkét Lily pedig Isabella, aki gólt 70 márka.,
használjuk a DENSE_RANK funkciót az SQL partícióval kombinálva.,v id=”2d0aafc924″>
nincs két diák hasonló jelek; ezért az eredmény beállítása hasonló RANGOT Funkció ebben az esetben.,
frissítsük a hallgatói jelet a következő lekérdezéssel, majd ismételjük meg a lekérdezést.
1
|
Frissítés Examresult meghatározott Márka=70, ahol Studentname=’Isabella’ s Téma=’Matematika’
|
láthatjuk, hogy a tanulói csoport, Isabella vannak hasonló jelek a Matematika, illetve természettudományos tantárgyak., A rang ebben az esetben mindkét tantárgy esetében azonos.
nézzük, a különbség a között, RANG (), valamint DENSE_RANK() SQL-Rank függvény a következő lekérdezés.,b829″>
1
2
3
4
5
6
7
|
VÁLASSZA ki Studentname,
Tárgy,
Jelek
DENSE_RANK() VÉGE(PARTÍCIÓ ÁLTAL StudentName ORDER BY Marks ) Rang
A ExamResult
rendezés Studentname,
Rang;
|
a kimenet, akkor láthatjuk, hogy a rés a rang funkció kimeneti belül a partíciókat., Nincs rés a DENSE_RANK függvényben.
a következő képernyőképen látható, hogy Isabella hasonló számokkal rendelkezik a két témában. A rank funkció rendel rank 1 hasonló értékek azonban belsőleg figyelmen kívül hagyja rank két, a következő sor kap rank három.
A Dense_Rank függvényben megtartja a rangot, és nem ad rést az értékekre.
NTILE(N) SQL RANK function
az NTILE(N) függvényt használjuk a megadott (N) csoportszámban lévő sorok számának elosztására., Minden sorcsoport megkapja a rangját a megadott feltétel szerint. Meg kell adnunk a kívánt csoportok számának értékét.
példámban kilenc rekord van a vizsgaeredmény táblázatban. Az NTILE(2) azt mutatja, hogy az eredményben két rekordra van szükségünk.,
1
2
3
4
5
|
SELECT *,
NTILE(2) OVER(
ORDER BY Marks DESC) Rank
FROM ExamResult
ORDER BY rank;
|
In the output, we can see two groups. Group 1 contains five rows, and Group 2 contains four rows.,
hasonlóképpen, NTILE(3) osztja a három csoport sorainak számát, amelyek mindegyik csoportban három rekordot tartalmaznak.,
1
2
3
4
5
|
SELECT *,
NTILE(3) OVER(
ORDER BY Marks DESC) Rank
FROM ExamResult
ORDER BY rank;
|
We can use SQL PARTITION BY clause to have more than one partition., A következő lekérdezésben az alanyok minden partíciója két csoportra oszlik.,
1
2
3
4
|
SELECT *,
NTILE(2) OVER(PARTITION BY subject ORDER BY Marks DESC) Rank
FROM ExamResult
ORDER BY subject, rank;
|
Practical usage of SQL RANK functions
We can use SQL RANK function to fetch specific rows from the data., Tegyük fel,hogy a diákok adatait az 1-3. A következő lekérdezésben a common table expressions(CTE) kifejezést használjuk, hogy adatokat kapjunk a ROW_NUMBER() függvény segítségével, majd később Szűrjük az eredményt a CTE-ből, hogy kielégítsük állapotunkat.,d>
használhatjuk az OFSZET HOZD parancsot kezdve az SQL Server 2012 hozz egy különleges bejegyzések számát.,v id=”0fa57edc44″>
Egy gyors összefoglaló az SQL RANGOT Funkciók
ROW_Number |
kihelyezi a szekvenciális rangsorolja a számot, hogy az egyes egyedi rekord., |
RANK |
hozzárendeli a rangszámot egy partíció minden sorához. Kihagyja a hasonló értékek számát. |
Dense_RANK |
hozzárendeli a rangszámot egy partíció minden sorához. Nem hagyja ki a hasonló értékek számát. |
NTILE(N) |
osztja a sorok számát A megadott partíció szerint, és egyedi értéket rendel a partícióhoz., |
következtetés
ebben a cikkben az SQL RANK funkciókat és a funkciók közötti különbséget vizsgáltuk. Az sql fejlesztők számára hasznos, ha ismerik ezeket a funkciókat, hogy jól felfedezzék és kezeljék adataikat. Ha bármilyen észrevétele vagy kérdése van, nyugodtan hagyja őket az alábbi megjegyzésekben.,
- Szerző
- Utolsó Hozzászólás
ő az alkotója az egyik legnagyobb ingyenes online gyűjtemények cikkek egyetlen témában, az ő 50 részes sorozat SQL Server mindig rendelkezésre álló csoportok. Az SQL Server közösséghez való hozzájárulása alapján 2020-ban és 2021-ben az SQLShack-en folyamatosan elismerték különböző díjakkal, köztük a rangos “az év legjobb szerzőjével”.,
Raj mindig érdekli az új kihívásokat, így ha segítségre van szüksége az írásaiban szereplő bármely témában, akkor rajendra-ban érhető el.gupta16@gmail.,com
összes Megtekintése hozzászólások Rajendra Gupta
- Végrehajtása kisebb-nagyobb verzió frissítéseket AWS RDS SQL Server – január 29, 2021
- Bevetni AWS RDS PostgreSQL esetekben – január 27, 2021
- Vándorolnak az intézményi SQL adatbázisok, hogy AWS RDS SQL Server segítségével AWS DMS – január 25, 2021