Összefoglaló: ebben az oktatóanyagban megtanulhatja, hogyan használhatja a ROW_NUMBER()
elemeket sorok számának rendeléséhez az egyes sorokhoz egy lekérdezés eredményhalmazában.
SQL ROW_NUMBER () Funkció áttekintése
A ROW_NUMBER()
egy ablakfunkció, amely szekvenciális egész számot rendel a a lekérdezés eredményhalmazának minden sora.
Az alábbiakban bemutatjuk a ROW_NUMBER()
függvény szintaxisát:
Ebben a szintaxisban
- Először a
PARTITION BY
záradék osztja fel aFROM
záradék partíciókra. APARTITION BY
záradék nem kötelező. Ha kihagyja, a teljes eredményhalmazt egyetlen partícióként kezeljük. - Ezután a
ORDER BY
záradék rendezi az egyes partíciók sorait. Mivel aROW_NUMBER()
sorrend-érzékeny függvény, aORDER BY
záradékra van szükség. - Végül mindegyik sor a partícióhoz sorozatos egész számot rendelünk, amelyet sornak hívunk. A sorszám visszaáll, amikor a partíció határait átlépik.
SQL ROW_NUMBER () példák
A employees
és departments
táblázatok a minta adatbázisból a bemutatáshoz:
A) Egyszerű SQL ROW_NUMBER () példa
A következő állítás megtalálja az összes alkalmazott keresztnevét, fizetését. Ezenkívül a ROW_NUMBER()
függvény segítségével soros egész számot ad hozzá minden sorhoz.
A következő kép a részeredménykészletet mutatja:
B ) SQL ROW_NUMBER () használata lapozáshoz
A ROW_NUMBER()
függvény felhasználható lapozáshoz. Például, ha egy alkalmazásban az összes alkalmazottat oldalanként szeretné megjeleníteni, amelyek mindegyik oldalán tíz rekord van.
- Először használja a
ROW_NUMBER()
function az egyes sorokhoz sorozatos egész szám hozzárendeléséhez. - Másodszor szűrje le a sorokat kért oldalanként. Például az első oldalon a sorok kezdve egytől 9-ig, a második oldalon pedig a sorok kezdődnek 11-től 20-ig, és így tovább.
A következő utasítás visszaadja a a második oldalon minden oldal tíz rekordot tartalmaz.
Az alábbiakban a kimenet látható:
Ha az általános lekérdezés (CTE) kifejezést szeretné használni az allekérdezés helyett, akkor itt van a lekérdezés:
C) Az SQL ROW_NUMBER használata () az n-edik legmagasabb érték megtalálásához csoportonként
Az alábbi példa bemutatja, hogyan lehet megtalálni azokat az alkalmazottakat, akiknek a tanszékükön a legmagasabb a fizetés:
Az allekérdezésben:
- Először a
PARTITION BY
záradék osztja el az alkalmazottakat osztályok szerint. - Másodszor, a
ORDER BY
záradék az egyes részlegek alkalmazottját fizetés szerint rendezi csökkenő sorrendben. - Harmadszor, a
ROW_NUMBER()
minden sorhoz sorozatos egész számot rendel. . Visszaállítja a számot, amikor az osztály változik.
Az alábbiakban bemutatjuk az allekérdezés eredményhalmazát:
A külső lekérdezésben csak azokat az alkalmazotti sorokat választottuk ki, amelyek row_num
az 1. érték.
Itt található a teljes lekérdezés kimenete:
Ha a WHERE
záradékban az állítmányt 1-ről 2-re, 3-ra és így tovább változtatja, akkor megkapja azokat az alkalmazottakat, akik rendelkezik a második legmagasabb fizetéssel, a harmadik legmagasabb fizetéssel és így tovább.
Ebben az oktatóanyagban megtanulta, hogyan kell használni az SQL ROW_NUMBER()
függvényt egymás utáni hozzárendeléshez. egész szám a lekérdezés eredményhalmazának minden sorához.
- Hasznos volt ez az oktatóanyag?
- IgenNem