Radnummerfunksjonen er en av vindusfunksjonene som brukes for å tilordne radnummeret til radene i hver av partisjonene i den rekkefølgen de ble sortert i partisjonen ved hjelp av SKILLEVEGG klausul, PARTISERING bare REKKEFØLGE klausulen kan brukes inne i OVER-klausulen i slike tilfeller vil hele tabellen bli betraktet som én partisjon. Men ORDER BY-klausulen er obligatorisk for å bruke ROW_NUMBER() funksjon siden den ordner radene i partisjonene i den logiske rekkefølgen og senere ROW_NUMBER() funksjon kan tildele radnummeret. I hver partisjon starter radnummeret fra 1.
Syntaks:
ROW_NUMBER ( )
OVER ( [ PARTISERING ETTER col_1,col_2… ] ORDER BY col_3,col_4.. ASC or DESC) AS column_name
Komponenter av ROW_NUMBER()-funksjonen
- DELING AV: Dette er hoveddelsetningen som deler opp radene i vinduer og for hver rad, verdiene til vindusfunksjoner anvendt vil bli beregnet.
- REKKEFØLGE ETTER: Dette brukes til å bestille radene i partisjonen, som standard er det stigende rekkefølge. Uten ORDER BY-klausulen fungerer ikke ROW_NUMBER()-funksjonen.
- Returtype: Returtypen til ROW_NUMBER()-funksjonen er BIGINT.
Bruk av ROW_NUMBER()-funksjonen
Trinn 1: Lag databasen Geeksforgeeks ved å bruke følgende SQL-spørring:
Spørsmål
CREATE DATABASE Geeksforgeeks>
Bruk GFG-databasen.
Spørsmål
USE techcodeview.com>
Trinn 3: Lag en tabell med elevene fra forskjellige seksjoner med deres totale karakterer av 500.
Spørsmål
CREATE TABLE studentsSectionWise( studentId INT, studentName VARCHAR(100), sectionName VARCHAR(50), studentMarks INT );>
Trinn 4: Sett inn radene i tabellen:
Spørsmål
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);>
Trinn 5: Sjekk tabellen
SELECT * FROM studentsSectionWise>
Produksjon:

studenterSectionWise-tabell
program i java
Bruker ORDER_BY-klausul med ROW_NUMBER()-funksjon
Hvis du ganske enkelt bruker ORDER BY-leddet med stigende eller synkende, betraktes hele tabellen som kun én partisjon.
La oss sjekke rangnummeret til elevene ved å bruke ROW_NUMBER()-funksjonen med ORDER BY-leddet inkludert alle seksjoner:
SELECT * , ROW_NUMBER() OVER ( ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise>
Forklaring: I spørringen har vi brukt ORDER BY-klausul med studentsMarks som er ordnet i DESC-rekkefølge.
Produksjon:

Produksjon
Forklaring: I resultatet kan vi se at hele tabellen betraktes som en enkelt partisjon og rankNumber-nummeret er i økende rekkefølge med studenteneMarks i synkende rekkefølge.
Bruker PARTITION_BY med ROW_NUMBER() funksjon
Ved å ganske enkelt bruke PARTITION BY-klausulen divdies og tabellen i forskjellige partisjoner basert på kolonnenavnet og deretter ORDER BY-klausulen med stigende eller synkende, betraktes hele tabellen som kun én partisjon. Og så fungerer ROW_NUMBER() hvert unike tall fra 1 i hver partisjon.
La oss sjekke rangeringsseksjonen med ROW_NUMBER() funksjonen med PARTITION BY og ORDER BY klausulene.
SELECT * , ROW_NUMBER() OVER (PARTITION BY sectionName ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise;>
Forklaring: I spørringen vi har brukt PARTITION BY klausul for å partisjonere tabellen på seksjonen Navn wise og ORDER BY klausulen med studentsMarks som er ordnet i DESC.
Produksjon:

Produksjon
Forklaring: I resultatet kan vi se at vi har partisjoner delt på seksjonen Navn wise, og deretter i hver partisjon blir studentene sortert på grunnlag av studentmerker i DESC-rekkefølgen , ROW_NUMBER() funksjonen tildelt radnummeret fra i hver partisjon med det å øke .
Forstå ROW_NUMBER() uten PARTITION BY
SQL Servers ROW_NUMBER()-funksjon er et fleksibelt verktøy som lar deg gi hver rad i et resultatsett et unikt radnummer. Den er like effektiv når den brukes uten PARTITION BY-klausulen, selv om den ofte brukes sammen med den for gruppering og rangering innenfor partisjoner. Mulighetene og bruken av ROW_NUMBER() uten PARTITION BY-klausulen vil bli diskutert i denne artikkelen.
Syntaks:
PLUKKE UT
ROW_NUMBER() OVER ( REKKEFØLGE ETTER YourOrderByColumn) SOM RowNum,
Andre kolonner
FRA
Ditt Tabellnavn;
La oss sjekke rangeringsseksjonen med ROW_NUMBER()-funksjonen uten PARTITION BY og ORDER BY-klausulene.
SELECT * , ROW_NUMBER() OVER (ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise>
Produksjon:

Produksjon
Bruker ROW_NUMBER() for å få delsettet av rader
Funksjonen ROW_NUMBER() kan brukes til å hente undersettet av rader fra tabellen ved å bruke CTE, som kan være nyttig i tilfelle paginering av dataene.
La oss sjekke de 2 beste rangerne i hver klasse ved å bruke CTE (Common Table Expression) med ROW_NUMBER() funksjon:
WITH topTwoRankers AS ( SELECT * , ROW_NUMBER() OVER (PARTITION BY sectionName ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise ) SELECT * FROM topTwoRankers WHERE rankNumber <=2;>
Forklaring: Her i spørringen har vi brukt CTE-uttrykket for å hente den midlertidige tabellen fra spørringen som er brukt ovenfor, og vi har brukt den ytre SELCT-spørringen for å få studentene hvis rangnummer er mindre enn eller lik 2.
Produksjon:

Produksjon
Forklaring: I resultatet kan vi se at vi har de to øverste rangerne fra hver seksjon som er delsettet av tabellen hentet fra spørringen vist i forrige eksempel.
Fordeler medROW_NUMBER()>Med DELING AV
- Gir mulighet for avansert partisjonsrangering.
- Aktiverer unik radnummerering innenfor bestemte grupper.
- Gir større fleksibilitet under omstendigheter som involverer omfattende analyser.
Fordeler medROW_NUMBER()>Uten PARTISERING AV
- Greit og enkelt.
- gjør det enkelt å rangere elementer i henhold til en bestemt kolonne.
- Kan gi bedre ytelse, spesielt for mindre resultatsett.
Konklusjon
Det er veldig nyttig når vi ønsker å ha sekvenseringen på grunnlag av partisjon og gjøre de nødvendige operasjonene. Ved hjelp av ORDER BY klausul er obligatorisk når du bruker ROW_NUMBER()-funksjonen. Også ved å bruke CTE kan vi hente undersettene til tabellen fra de bestilte partisjonene. Hovedbruken til ROW_NUMBER() er rangering av radene på grunnlag av forskjellige partisjoner, noe som er veldig nyttig for dataanalyseformål.