logo

Broj reda SQL poslužitelja

Broj reda je najčešći funkcija rangiranja koristi se u SQL Serveru. Funkcija ROW_NUMBER(). generira redni broj za svaki red unutar particije u rezultirajućem izlazu. U svakoj particiji, broj prvog reda počinje s 1. Uvijek moramo koristiti NARUČI PO klauzula kako bi se osiguralo da su brojevi dodijeljeni u ispravnom nizu. Vrijednosti koje ova funkcija vraća su od VELIKA INT tip podataka. Ova funkcija dolazi s SQL Serverom 2005 i novijim verzijama MS SQL.

ROW_NUMBER određuje privremena vrijednost kada se upit izvrši. Ako želite dobiti brojeve u tablici, morate vidjeti IDENTITET vlasništvo i SLIJED . Kada funkcija ROW_NUMBER u SQL Serveru naiđe na dvije identične vrijednosti u istoj particiji, dodjeljuje im različite brojeve ranga. Broj ranga bit će određen redoslijedom kojim su prikazani.

kako zatvoriti način rada za programere

Ne postoji jamstvo da će vrijednost koju vraća ova funkcija biti jednako raspoređena za svako izvođenje osim ako je sljedeće istinito:

  • Vrijednosti particioniranih stupaca su jedinstvene
  • Vrijednosti stupaca ORDER BY su jedinstvene
  • Kombinacija stupaca particije i reda prema je jedinstvena

Sintaksa

Sljedeća je sintaksa koja ilustrira funkciju ROW_NUMBER():

 ROW_NUMBER() OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ... ) 

Razumimo sintaksu funkcije ROW NUMBER():

NAD

Važno je razumjeti ovu klauzulu koja specificira prozor ili skup redaka kojima funkcija prozora upravlja. PARTITION BY i ORDER BY dvije su moguće klauzule OVER klauzule. Izraz ORDER BY klauzule OVER podržan je kada retci moraju doći u određenom redoslijedu da bi se funkcija izvršila.

PODJELA PO

dugo do int java
  • To je opcijska klauzula koja dijeli skup rezultata u particije (skupine redaka). Zatim se funkcija ROW NUMBER() primjenjuje na svaku particiju i svakoj particiji dodjeljuje zasebno broj ranga.
  • Ako izostavimo particiju po klauzuli, funkcija ROW_NUMBER tretirat će cijeli rezultat kao jednu particiju i osigurati rangiranje od vrha do dna.

NARUČI PO

Ova nam klauzula omogućuje sortiranje redaka skupa rezultata unutar svake particije. To je obavezna klauzula jer funkcija ROW_NUMBER() ovisi o redoslijedu.

Primjer

Na primjeru ćemo razumjeti kako funkcija ROW_NUMBER radi u tablici SQL Servera. Prvo ćemo stvoriti tablicu pod nazivom ' Osobe ' pomoću donje izjave:

 CREATE TABLE Persons ( person_name varchar(45) NOT NULL, product varchar(45) DEFAULT NULL, country varchar(25) DEFAULT NULL, price float, years int NOT NULL ); 

Zatim ćemo dodati neke zapise u ovu tablicu koristeći donju izjavu:

 INSERT INTO Persons (person_name, product, country, price, years) VALUES ('Steffen', 'Computer', 'USA', 20000.00, 2018), ('Joseph', 'Laptop', 'India', 35000.00, 2016), ('Kevin', 'TV', 'USA', 15000.00, 2016), ('Thompson', 'Mobile', 'France', 12500.00, 2017), ('Donald', 'Laptop', 'England', 30000.00, 2018), ('Joseph', 'Mobile', 'India', 18000.00, 2018), ('Matthew', 'Desktop', 'France', 22000.00, 2017), ('Antonio', 'Mouse', 'England', 1200.00, 2016); 

Zatim provjerite podatke pomoću IZABERI izjava. Dobit ćemo sljedeći izlaz:

Broj reda SQL poslužitelja

1. Jednostavan primjer ROW_NUMBER().

Sljedeća izjava prikazuje pojedinosti o osobi i dodaje sekvencijalni cijeli broj u svaki red pomoću ROW_NUMBER():

 SELECT *, ROW_NUMBER() OVER (ORDER BY price) AS row_num FROM Persons; 

Ovdje nismo naveli klauzulu PARTITION BY tako da funkcija ROW_NUMBER() tretira cijeli skup rezultata kao jednu particiju. Nakon izvršenja naredbe, dobit ćemo sljedeći izlaz:

Broj reda SQL poslužitelja

2. ROW_NUMBER() preko primjera particija

Funkcija ROW NUMBER() koja se koristi u ovom primjeru daje redni broj svakom zapisu unutar particije u tablici. Uvijek je ponovno inicijalizirao broj retka kada se godina promijeni:

 SELECT person_name, product, price, years, ROW_NUMBER() OVER ( PARTITION BY years ORDER BY price) AS row_num FROM Persons; 

Ovdje smo upotrijebili klauzulu PARTITION BY koja dijeli 'Osobe' tablicu u particije na temelju 'godine' stupac. Nakon izvršenja, dobit ćemo sljedeći rezultat:

Broj reda SQL poslužitelja

3. ROW_NUMBER() Primjer za paginaciju

primjeri programiranja u pythonu

Također možemo koristiti funkciju ROW_NUMBER() za označavanje stranica. Na primjer , ako želimo dobiti sve informacije o osobi u aplikaciji po stranicama, prvo ćemo svakom retku dodijeliti redni broj pomoću funkcije ROW_NUMBER(). Drugo, poredajte retke prema traženoj stranici.

Sljedeća izjava to jasnije objašnjava:

 SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY price) AS row_num, person_name, product, price FROM Persons) P WHERE row_num &gt; 3 AND row_num <= 6; < pre> <p>It will give the following output:</p> <img src="//techcodeview.com/img/sql-server-tutorials/96/sql-server-row-number-4.webp" alt="SQL Server Row Number"> <p>If we do not want to use the <strong>subquery</strong> , we can use the <strong>common table expression (CTE)</strong> as below statement:</p> <pre> WITH CTE_Person AS ( SELECT ROW_NUMBER() OVER (ORDER BY price) AS row_num, person_name, product, price FROM Persons) SELECT * FROM CTE_Person WHERE row_num &gt; 3 AND row_num <= 6; < pre> <p>In this example, we have first specified the CTE that uses the ROW_NUMBER() function to assign each row in the result set sequentially. Second, the outer query returned the desired result. After execution, we will get the following output:</p> <img src="//techcodeview.com/img/sql-server-tutorials/96/sql-server-row-number-5.webp" alt="SQL Server Row Number"> <h3>Conclusion</h3> <p>In this article, we learned how to give a sequential number to each record within a partition of a query using the ROW NUMBER() function in SQL Server.</p> <hr></=></pre></=>