Funkcija številke vrstice je ena od okenskih funkcij, ki se uporablja za dodeljevanje številke vrstice vrsticam v vsaki od particij v vrstnem redu, v katerem so bile razvrščene v particiji z uporabo PREGRADA člen, PARTITION le NAROČITE klavzulo lahko uporabite znotraj klavzule OVER, v tem primeru bo celotna tabela obravnavana kot ena particija. Toda klavzula ORDER BY je obvezna za uporabo ROW_NUMBER() funkcijo, saj razporedi vrstice v particijah v tem logičnem vrstnem redu, pozneje pa lahko funkcija ROW_NUMBER() dodeli številko vrstice. V vsaki particiji se številka vrstice začne z 1.
Sintaksa:
ROW_NUMBER ( )
NAD ( [ PARTICIJA PO col_1,col_2… ] ORDER BY col_3,col_4.. ASC ali DESC) AS column_name
Komponente funkcije ROW_NUMBER().
- RAZDELITEV PO: To je glavni podčlen, ki razdeli vrstice v okna in za vsako vrstico so vrednosti okenske funkcije uporabljena bo izračunana.
- VRSTI PO: To se uporablja za vrstni red vrstic v particiji, privzeto je naraščajoči vrstni red. Brez klavzule ORDER BY funkcija ROW_NUMBER() ne deluje.
- Vrsta vračila: Vrnitev vrste funkcije ROW_NUMBER() je BIGINT.
Uporaba funkcije ROW_NUMBER().
Korak 1: Ustvarite bazo podatkov Geeksforgeeks z uporabo naslednje poizvedbe SQL:
Poizvedba
CREATE DATABASE Geeksforgeeks>
Uporabite zbirko podatkov GFG.
Poizvedba
USE techcodeview.com>
3. korak: Ustvarite tabelo z učenci različnih oddelkov z njihovimi skupnimi ocenami od 500.
Poizvedba
CREATE TABLE studentsSectionWise( studentId INT, studentName VARCHAR(100), sectionName VARCHAR(50), studentMarks INT );>
4. korak: V tabelo vstavite vrstice:
Poizvedba
INSERT INTO studentsSectionWise VALUES (1, 'Geek1','A',461), (1, 'Geek2','B',401), (1, 'Geek3','C',340), (2, 'Geek4','A',446), (2, 'Geek5','B',361), (2, 'Geek6','C',495), (3, 'Geek7','A',436), (3, 'Geek8','B',367), (3, 'Geek9','C',498), (4, 'Geek10','A',206), (4, 'Geek11','B',365), (4, 'Geek12','C',485), (5, 'Geek13','A',446), (5, 'Geek14','B',368), (5, 'Geek15','C',295), (6, 'Geek16','C',495);>
5. korak: Preverite tabelo
SELECT * FROM studentsSectionWise>
Izhod:

tabela študentovSectionWise
metoda podniza v Javi
Uporaba člena ORDER_BY s funkcijo ROW_NUMBER().
Preprosta uporaba klavzule ORDER BY z naraščajočim ali padajočim meni, da je celotna tabela samo ena particija.
Preverimo rankNumber študentov s funkcijo ROW_NUMBER() s klavzulo ORDER BY, vključno z vsemi razdelki:
SELECT * , ROW_NUMBER() OVER ( ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise>
Pojasnilo: V poizvedbi smo uporabili klavzulo ORDER BY z ocenami students, ki so razvrščene v vrstnem redu DESC.
Izhod:

Izhod
Pojasnilo: V rezultatu lahko vidimo, da se celotna tabela obravnava kot ena particija in da je številka rankNumber v naraščajočem vrstnem redu z ocenami študentov v padajočem vrstnem redu.
Uporaba PARTITION_BY s funkcijo ROW_NUMBER().
Preprosta uporaba klavzule PARTITION BY razdeli in tabelo na različne particije glede na ime stolpca in nato klavzulo ORDER BY z naraščajočim ali padajočim, celotno tabelo obravnava kot samo eno particijo. In potem ROW_NUMBER() deluje z vsako edinstveno številko, ki se začne z 1 v vsaki particiji.
Preverimo razdelek za razvrščanje z uporabo funkcije ROW_NUMBER() s členoma PARTITION BY in ORDER BY.
SELECT * , ROW_NUMBER() OVER (PARTITION BY sectionName ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise;>
Pojasnilo: V poizvedbi, ki smo jo uporabili PARTITION BY klavzula razdeliti tabelo na razdelek Name wise in klavzulo ORDER BY z studentsMarks, ki je urejen v DESC.
Izhod:

Izhod
Pojasnilo: V rezultatu lahko vidimo, da imamo particije, razdeljene z imenom odseka, nato pa so v vsaki particiji študenti razvrščeni na podlagi ocen učencev v vrstnem redu DESC, funkcija ROW_NUMBER() je dodelila številko vrstice, ki se začne v vsaki particiji in se poveča .
Razumevanje ROW_NUMBER() brez PARTITION BY
Funkcija ROW_NUMBER() strežnika SQL Server je prilagodljivo orodje, ki vam omogoča, da vsaki vrstici v nizu rezultatov zagotovite edinstveno številko vrstice. Enako učinkovit je, če se uporablja brez klavzule PARTITION BY, čeprav se pogosto uporablja v povezavi z njim za združevanje in razvrščanje znotraj particij. V tem članku bomo razpravljali o možnostih in uporabi ROW_NUMBER() brez klavzule PARTITION BY.
Sintaksa:
IZBERI
ROW_NUMBER() PREKO ( NAROČI PO YourOrderByColumn) AS Številka vrstice,
OtherColumns
OD
VašeImeTabele;
Preverimo razdelek za razvrščanje z uporabo funkcije ROW_NUMBER() brez klavzul PARTITION BY in ORDER BY.
SELECT * , ROW_NUMBER() OVER (ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise>
Izhod:

Izhod
Uporaba ROW_NUMBER() za pridobitev podnabora vrstic
Funkcijo ROW_NUMBER() lahko uporabite za pridobivanje podnabora vrstic iz tabele z uporabo CTE, kar je lahko uporabno v primeru ostranjenja podatkov.
Preverimo prva 2 uvrščena v vsakem razredu z uporabo CTE (izraz skupne tabele) s funkcijo ROW_NUMBER():
WITH topTwoRankers AS ( SELECT * , ROW_NUMBER() OVER (PARTITION BY sectionName ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise ) SELECT * FROM topTwoRankers WHERE rankNumber <=2;>
Pojasnilo: Tukaj v poizvedbi smo uporabili izraz CTE, da bi dobili začasno tabelo iz zgoraj uporabljene poizvedbe, in smo uporabili zunanjo poizvedbo SELCT, da bi dobili študente, katerih rankNumber je manjši ali enak 2.
Izhod:

Izhod
Pojasnilo: V rezultatu, ki ga lahko vidimo, imamo prva 2 razvrstitelja iz vsakega razdelka, ki sta podmnožica tabele, pridobljene iz poizvedbe, prikazane v prejšnjem primeru.
PrednostiROW_NUMBER()>
Z PARTITION BY
- Omogoča napredno razvrščanje particij.
- Omogoča edinstveno oštevilčenje vrstic znotraj določenih skupin.
- Omogoča večjo prilagodljivost v okoliščinah, ki vključujejo obsežno analizo.
PrednostiROW_NUMBER()>
Brez PARTITION BY
- Preprosto in preprosto.
- omogoča preprosto razvrščanje elementov glede na določen stolpec.
- Lahko ponudi boljšo zmogljivost, zlasti za manjše nize rezultatov.
Zaključek
Zelo uporabno je, ko želimo imeti zaporedje na podlagi particije in izvajati potrebne operacije. Uporaba Klavzula ORDER BY je ob uporabi funkcije ROW_NUMBER() obvezno. Tudi z uporabo CTE lahko dobimo podmnožice tabele iz urejenih particij. Glavni primer uporabe ROW_NUMBER() je razvrščanje vrstic na podlagi različnih particij, kar je zelo uporabno za namene analize podatkov.