Radnummerfunktionen är en av fönsterfunktionerna som används för att tilldela radnumret till raderna i var och en av partitionerna i den ordning som de sorterades i partitionen med hjälp av DELA klausul, PARTITION endast BESTÄLLA sats kan användas inuti OVER-satsen i sådana fall kommer hela tabellen att betraktas som en partition. Men ORDER BY-satsen är obligatorisk för att använda ROW_NUMBER() funktion eftersom den ordnar raderna i partitionerna i den logiska ordningen och senare ROW_NUMBER() funktion kan tilldela radnumret. I varje partition börjar radnumret från 1.
Syntax:
ROW_NUMBER ( )
ÖVER ( [ PARTITION BY col_1, col_2… ] ORDER BY col_3, col_4.. ASC or DESC) AS column_name
Komponenter av ROW_NUMBER()-funktionen
- PARTITION AV: Detta är den huvudsakliga underklausulen som delar upp raderna i fönster och för varje rad, värdena på fönsterfunktioner tillämpas kommer att beräknas.
- SORTERA EFTER: Detta används för att ordna raderna i partitionen, som standard är det stigande ordning. Utan ORDER BY-satsen fungerar inte ROW_NUMBER()-funktionen.
- Returtyp: Returtypen för ROW_NUMBER()-funktionen är BIGINT.
Användning av ROW_NUMBER()-funktionen
Steg 1: Skapa databasen Geeksforgeeks genom att använda följande SQL-fråga:
Fråga
CREATE DATABASE Geeksforgeeks>
Använd GFG-databasen.
Fråga
USE techcodeview.com>
Steg 3: Skapa en tabell med eleverna från olika sektioner med deras totala poäng av 500.
Fråga
CREATE TABLE studentsSectionWise( studentId INT, studentName VARCHAR(100), sectionName VARCHAR(50), studentMarks INT );>
Steg 4: Infoga raderna i tabellen:
Fråga
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);>
Steg 5: Kontrollera tabellen
SELECT * FROM studentsSectionWise>
Produktion:

studenterSectionWise-tabell
javascript if-sats
Använder ORDER_BY-sats med ROW_NUMBER()-funktionen
Att helt enkelt använda ORDER BY-satsen med stigande eller fallande betraktar hela tabellen som endast en partition.
Låt oss kontrollera rankNumber för elever som använder funktionen ROW_NUMBER() med ORDER BY-satsen inklusive alla avsnitt:
SELECT * , ROW_NUMBER() OVER ( ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise>
Förklaring: I frågan har vi använt ORDER BY-satsen med studentsMarks som är ordnad i DESC-ordning.
Produktion:

Produktion
Förklaring: I resultatet kan vi se att hela tabellen betraktas som en enda partition och rankNumber-numret är i stigande ordning med studentMarks i fallande ordning.
Använder PARTITION_BY med ROW_NUMBER() funktion
Att helt enkelt använda PARTITION BY-satsen delar upp och tabellen i olika partitioner baserat på kolumnnamnet och sedan ORDER BY-satsen med stigande eller fallande betraktar hela tabellen som endast en partition. Och sedan fungerar ROW_NUMBER() varje unikt nummer från 1 i varje partition.
Låt oss kontrollera rankningssektionen med hjälp av funktionen ROW_NUMBER() med satserna PARTITION BY och ORDER BY.
SELECT * , ROW_NUMBER() OVER (PARTITION BY sectionName ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise;>
Förklaring: I den fråga vi har använt PARTITION BY-klausul för att partitionera tabellen på avsnittet Namnvis och ORDER BY-satsen med studentsMarks som är ordnad i DESC.
Produktion:

Produktion
Förklaring: I resultatet kan vi se att vi har partitioner dividerade med avsnittet Namnmässigt och sedan i varje partition är eleverna ordnade på basis av studentmarkeringar i DESC-ordningen , ROW_NUMBER()-funktionen tilldelas radnumret från i varje partition med att det ökas .
Förstå ROW_NUMBER() Utan PARTITION BY
SQL Servers ROW_NUMBER() funktion är ett flexibelt verktyg som låter dig ge varje rad i en resultatuppsättning ett unikt radnummer. Den är lika effektiv när den används utan PARTITION BY-satsen, även om den ofta används tillsammans med den för att gruppera och rangordna inom partitioner. Möjligheterna och användningarna av ROW_NUMBER() utan PARTITION BY-satsen kommer att diskuteras i den här artikeln.
Syntax:
VÄLJ
ROW_NUMBER() ÖVER ( SORTERA EFTER YourOrderByColumn) SOM RowNum,
Övriga kolumner
FRÅN
Ditt Tabellnamn;
Låt oss kontrollera rankningssektionen med hjälp av ROW_NUMBER()-funktionen utan PARTITION BY- och ORDER BY-satserna.
SELECT * , ROW_NUMBER() OVER (ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise>
Produktion:

Produktion
Använder ROW_NUMBER() för att få delmängden av rader
Funktionen ROW_NUMBER() kan användas för att hämta delmängden av rader från tabellen med hjälp av CTE, vilket kan vara användbart vid sidnumrering av data.
Låt oss kontrollera de två bästa rankarna i varje klass med hjälp av CTE (Common Table Expression) med ROW_NUMBER() funktion:
WITH topTwoRankers AS ( SELECT * , ROW_NUMBER() OVER (PARTITION BY sectionName ORDER BY studentMarks DESC) AS rankNumber FROM studentsSectionWise ) SELECT * FROM topTwoRankers WHERE rankNumber <=2;>
Förklaring: Här i frågan har vi använt CTE-uttrycket för att hämta den temporära tabellen från frågan som används ovan och vi har använt den yttre SELCT-frågan för att få elever vars rankNumber är mindre än eller lika med 2.
Produktion:

Produktion
Förklaring: I resultatet kan vi se att vi har de två bästa rangordnarna från varje sektion som är delmängden av tabellen som erhålls från frågan som visas i föregående exempel.
Fördelarna medROW_NUMBER()>Med PARTITION BY
- Tillåter avancerad partitionsrankning.
- Möjliggör unik radnumrering inom specifika grupper.
- Möjliggör större flexibilitet under omständigheter som involverar omfattande analys.
Fördelarna medROW_NUMBER()>Utan PARTITION BY
- Rättframma och enkelt.
- gör det enkelt att rangordna objekt enligt en viss kolumn.
- Kan ge bättre prestanda, särskilt för mindre resultatuppsättningar.
Slutsats
Det är mycket användbart när vi vill ha sekvenseringen på basis av partition och göra de nödvändiga operationerna. Använder sig av ORDER BY klausul är obligatoriskt när du använder ROW_NUMBER()-funktionen. Också genom att använda CTE kan vi få delmängder av tabellen från de beställda partitionerna. Det huvudsakliga användningsfallet för ROW_NUMBER() är rangordning av raderna på basis av olika partitioner, vilket är mycket användbart för dataanalyssyften.