logo

SQL-palvelimen rivinumero

Rivin numero on yleisin ranking-toiminto käytetään SQL Serverissä. Funktio ROW_NUMBER() luo järjestysnumeron jokaiselle osion riville tuloksena olevassa lähdössä. Jokaisessa osiossa ensimmäisen rivin numero alkaa 1:llä. Meidän on aina käytettävä TILAA lauseke varmistaaksesi, että numerot annetaan oikeassa järjestyksessä. Tämän funktion palauttamat arvot ovat BIG INT tietotyyppi. Tämä toiminto tulee SQL Server 2005:n ja uudempien MS SQL -versioiden mukana.

ROW_NUMBER määrittää väliaikainen arvo kun kysely suoritetaan. Jos haluat saada numerot taulukkoon, sinun täytyy nähdä IDENTITY omaisuutta ja SEKVENSSI . Kun SQL Serverin ROW_NUMBER-funktio kohtaa kaksi identtistä arvoa samassa osiossa, se määrittää niille eri arvonumerot. Sijoitusnumero määräytyy sen mukaan, missä järjestyksessä ne näkyvät.

Ei ole mitään takeita siitä, että tämän funktion palauttama arvo määräytyy samana jokaiselle suoritukselle, elleivät seuraavat asiat pidä paikkaansa:

  • Osioitujen sarakkeiden arvot ovat yksilöllisiä
  • ORDER BY -sarakkeiden arvot ovat yksilöllisiä
  • Osio- ja Järjestys-sarakkeiden yhdistelmä ovat ainutlaatuisia

Syntaksi

Seuraavassa on syntaksi, joka kuvaa ROW_NUMBER()-funktiota:

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

Ymmärretään ROW NUMBER() -funktion syntaksi:

YLI

python lajiteltu tuple

On tärkeää ymmärtää tämä lauseke, joka määrittää ikkunan tai rivijoukon, jota ikkunatoiminto käyttää. PARTITION BY ja ORDER BY ovat OVER-lauseen kaksi mahdollista lauseketta. OVER-lauseen ORDER BY -lauseketta tuetaan, kun rivien on oltava tietyssä järjestyksessä, jotta funktio voidaan suorittaa.

OSIJOITUS

  • Se on valinnainen lauseke, joka jakaa tulosjoukon osioihin (riviryhmiin). Sitten ROW NUMBER() -funktiota sovelletaan jokaiseen osioon ja se määrittää kunkin osion järjestysnumeron erikseen.
  • Jos jätämme osion pois lauseen mukaan, ROW_NUMBER-funktio käsittelee koko tuloksen yhtenä osiona ja antaa sijoituksen ylhäältä alas.

TILAA

Tämän lausekkeen avulla voimme lajitella tulosjoukon rivit kunkin osion sisällä. Se on pakollinen lause, koska ROW_NUMBER()-funktio on järjestyksestä riippuvainen.

Esimerkki

Ymmärrämme esimerkin avulla, miten funktio ROW_NUMBER toimii SQL Server -taulukossa. Ensin luodaan taulukko nimeltä Henkilöt ' käyttämällä alla olevaa lausetta:

 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 ); 

Seuraavaksi lisäämme joitain tietueita tähän taulukkoon käyttämällä alla olevaa lausetta:

javascriptin globaaleja muuttujia
 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); 

Tarkista seuraavaksi tiedot käyttämällä VALITSE lausunto. Saamme alla olevan tulosteen:

SQL-palvelimen rivinumero

1. Yksinkertainen ROW_NUMBER() esimerkki

Seuraava lausunto näyttää henkilön tiedot ja lisää peräkkäisen kokonaisluvun jokaiselle riville käyttämällä ROW_NUMBER():

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

Tässä emme ole määrittäneet PARTITION BY -lausetta, joten ROW_NUMBER()-funktio käsittelee koko tulosjoukkoa yhtenä osiona. Lausunnon suorittamisen jälkeen saamme seuraavan tulosteen:

SQL-palvelimen rivinumero

2. ROW_NUMBER() yli osioiden esimerkki

Tässä esimerkissä käytetty ROW NUMBER()-funktio tarjoaa järjestysnumeron jokaiselle taulukon osion tietueelle. Se alustaa aina rivin numeron uudelleen, kun vuosi vaihtuu:

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

Tässä olemme käyttäneet PARTITION BY -lausetta, joka jakaa 'Henkilöt' taulukko osioihin perustuen 'vuodet' sarakkeessa. Suorituksen jälkeen saamme seuraavan tuloksen:

SQL-palvelimen rivinumero

3. ROW_NUMBER() Esimerkki sivutusta varten

tietokoneen organisaatio ja arkkitehtuuri

Voimme käyttää myös ROW_NUMBER()-funktiota sivutukselle. Esimerkiksi , jos haluamme saada kaikki henkilön tiedot sovelluksessa sivuittain, annamme jokaiselle riville ensin järjestysnumeron käyttämällä ROW_NUMBER()-funktiota. Toiseksi, lajittele rivit pyydetyn sivun mukaan.

Seuraava lausunto selittää sen selkeämmin:

 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></=>