Rivinumerotoiminto on yksi ikkunafunktioista, joita käytetään rivinumeroiden määrittämiseen kunkin osion riveille siinä järjestyksessä, jossa ne on lajiteltu osiossa käyttämällä OSIO lauseke, vain OSIO TILAUS lauseketta voidaan käyttää OVER-lauseen sisällä, jolloin koko taulukko katsotaan yhdeksi osioksi. Mutta ORDER BY -lauseke on pakollinen käytettäessä ROW_NUMBER() funktio, koska se järjestää osioiden rivit loogiseen järjestykseen ja myöhemmin ROW_NUMBER()-funktio voi määrittää rivin numeron. Jokaisessa osiossa rivinumero alkaa 1:stä.
Syntaksi:
ROW_NUMBER ( )
YLI ( [ OSIO SARAKE_1, sarake_2… ] ORDER BY sarake_3, sarake_4.. ASC tai DESC) AS sarakkeen_nimi
Funktion ROW_NUMBER() osat
- OSIJOITTAJA: Tämä on pääalalauseke, joka jakaa rivit ikkunoihin ja kunkin rivin arvot ikkunan toiminnot sovelletaan lasketaan.
- TILAUS: Tätä käytetään osion rivien järjestämiseen, oletusarvoisesti se on nousevassa järjestyksessä. Ilman ORDER BY -lausetta ROW_NUMBER()-funktio ei toimi.
- Palautustyyppi: ROW_NUMBER()-funktion palautustyyppi on BIGINT.
ROW_NUMBER()-funktion käyttö
Vaihe 1: Luo tietokanta Geeksforgeeks käyttämällä seuraavaa SQL-kyselyä:
Kysely
CREATE DATABASE Geeksforgeeks>
Käytä GFG-tietokantaa.
Kysely
USE techcodeview.com>
Vaihe 3: Luo taulukko eri osien opiskelijoista, joiden kokonaispistemäärä on 500.
Kysely
CREATE TABLE studentsSectionWise( studentId INT, studentName VARCHAR(100), sectionName VARCHAR(50), studentMarks INT );>
Vaihe 4: Lisää rivit taulukkoon:
Kysely
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);>
Vaihe 5: Tarkista taulukko
SELECT * FROM studentsSectionWise>
Lähtö:

opiskelijatSectionWise taulukko
int merkkijonomuunnos Javassa
Käytetään ORDER_BY-lausetta ROW_NUMBER()-funktion kanssa
Yksinkertaisesti ORDER BY -lauseen käyttäminen nousevan tai laskevan mukaan pitää koko taulukkoa vain yhtenä osiona.
Tarkistetaan opiskelijoiden rankNumber ROW_NUMBER()-funktiolla ORDER BY -lauseella, joka sisältää kaikki osat:
SELECT * , ROW_NUMBER() OVER ( ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise>
Selitys: Kyselyssä olemme käyttäneet ORDER BY -lausetta studentMarksin kanssa, joka on järjestetty DESC-järjestyksessä.
Lähtö:

Lähtö
Selitys: Tuloksesta nähdään, että koko taulukko katsotaan yhdeksi osioksi ja rankNumber-numero on kasvavassa järjestyksessä studentMarksin kanssa laskevassa järjestyksessä.
Käytetty PARTITION_BY ROW_NUMBER()-funktion kanssa
Käyttämällä yksinkertaisesti PARTITION BY -lausetta ja taulukko eri osioihin sarakkeen nimen perusteella ja sitten ORDER BY -lausetta nousevalla tai laskevalla luvulla, koko taulukko pidetään vain yhtenä osiona. Ja sitten ROW_NUMBER() toimii jokaisen yksilöllisen numeron ykkösestä alkaen kussakin osiossa.
Tarkistetaan ranking-osio käyttämällä ROW_NUMBER()-funktiota PARTITION BY- ja ORDER BY -lauseiden kanssa.
SELECT * , ROW_NUMBER() OVER (PARTITION BY sectionName ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise;>
Selitys: Käytössämme kyselyssä OSITUS lausekkeella osioidaksesi taulukon osiossa Name wise ja ORDER BY -lauseessa opiskelijamerkit, jotka on järjestetty DESC:ssä.
Lähtö:

Lähtö
Selitys: Tuloksessa näemme, että meillä on osiot jaettuna osiossa Name viisaasti ja sitten jokaisessa osiossa opiskelijat järjestetään opiskelijamerkkien perusteella DESC-järjestyksessä, ROW_NUMBER()-funktiolle on annettu rivinumero alkaen jokaisesta osiosta ja sitä kasvatetaan .
ROW_NUMBER() ymmärtäminen ilman PARTITION BY:tä
SQL Serverin ROW_NUMBER()-funktio on joustava työkalu, jonka avulla voit antaa jokaiselle tulosjoukon riville yksilöllisen rivinumeron. Se on yhtä tehokas, kun sitä käytetään ilman PARTITION BY -lausetta, vaikka sitä käytetään usein yhdessä sen kanssa osioiden ryhmittelyyn ja järjestykseen. Parametrin ROW_NUMBER() mahdollisuuksia ja käyttöä ilman PARTITION BY -lausetta käsitellään tässä artikkelissa.
Syntaksi:
VALITSE
ROW_NUMBER() OLLUT ( TILAA YourOrderByColumn) KUTEN rivinumero,
MuutSarakkeet
FROM
Sinun TaulukonNimi;
Tarkastellaan järjestysosiota ROW_NUMBER()-funktiolla ilman PARTITION BY- ja ORDER BY -lauseita.
SELECT * , ROW_NUMBER() OVER (ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise>
Lähtö:

Lähtö
ROW_NUMBER():n käyttäminen rivien osajoukon hakemiseen
Funktion ROW_NUMBER() avulla voidaan saada rivien osajoukko taulukosta CTE:n avulla, mikä voi olla hyödyllistä tietojen sivuttamisessa.
Tarkastetaan jokaisen luokan 2 parasta sijoittajaa käyttämällä CTE (Yleinen taulukkolauseke) funktiolla 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;>
Selitys: Tässä kyselyssä olemme käyttäneet CTE-lauseketta saadakseen väliaikaisen taulukon yllä käytetystä kyselystä ja olemme käyttäneet ulompaa SELCT-kyselyä saadakseen opiskelijat, joiden rankNumber on pienempi tai yhtä suuri kuin 2.
Lähtö:

Lähtö
Selitys: Tuloksessa näemme, että meillä on kustakin osiosta kaksi parasta sijoitusta, jotka ovat edellisessä esimerkissä esitetystä kyselystä saadun taulukon osajoukko.
EdutROW_NUMBER()>
Kanssa PARTITION BY
- Mahdollistaa edistyneen osion luokituksen.
- Ottaa käyttöön yksilöllisen rivinumeron tietyissä ryhmissä.
- Mahdollistaa suuremman joustavuuden olosuhteissa, joissa tarvitaan laajaa analysointia.
EdutROW_NUMBER()>
Ilman PARTITION BY:tä
- Suoraviivaista ja yksinkertaista.
- helpottaa kohteiden luokittelua tietyn sarakkeen mukaan.
- Saattaa tarjota paremman suorituskyvyn, erityisesti pienemmille tulossarjoille.
Johtopäätös
Se on erittäin hyödyllinen, kun haluamme sekvensoida osion perusteella ja tehdä tarvittavat toiminnot. Käyttämällä TILAA lausekkeen mukaan on pakollinen käytettäessä ROW_NUMBER()-funktiota. Myös CTE:tä käyttämällä saamme taulukon osajoukot tilatuista osioista. ROW_NUMBER():n pääkäyttötapaus on rivien järjestys eri osioiden perusteella, mikä on erittäin hyödyllistä data-analyysitarkoituksiin.