logo

SQL Server Satır Numarası

Satır numarası en yaygın olanıdır sıralama işlevi SQL Server'da kullanılır. ROW_NUMBER() işlevi bir bölüm içindeki her satır için sıralı bir sayı üretir sonuçta ortaya çıkan çıktıda. Her bölümde ilk satır numarası 1 ile başlar. Her zaman 1'i kullanmalıyız. TARAFINDAN SİPARİŞ Numaraların doğru sırada atanmasını sağlamak için madde. Bu fonksiyonun döndürdüğü değerler şunlardır: BÜYÜK DAHİL veri tipi. Bu işlev, SQL Server 2005 ve sonraki MS SQL sürümleriyle birlikte gelir.

ROW_NUMBER şunu belirler: geçici değer sorgu yürütüldüğünde. Sayıları bir tabloya almak istiyorsanız, görmeniz gerekir. KİMLİK mülkiyet ve SEKANS . SQL Server'daki ROW_NUMBER işlevi aynı bölümde iki özdeş değerle karşılaştığında, bunlara farklı sıra numaraları atar. Sıra numarası, görüntülenme sırasına göre belirlenecektir.

Aşağıdakiler doğru olmadığı sürece, bu işlevin döndürdüğü değerin her yürütme için aynı şekilde sıralanacağının garantisi yoktur:

  • Bölümlenmiş sütun değerleri benzersizdir
  • ORDER BY sütun değerleri benzersizdir
  • Partition ve Order By sütunlarının birleşimi benzersizdir

Sözdizimi

ROW_NUMBER() işlevini gösteren söz dizimi aşağıdadır:

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

ROW NUMBER() fonksiyonunun sözdizimini anlayalım:

ÜZERİNDE

Pencere fonksiyonunun çalıştırdığı pencereyi veya satır kümesini belirten bu cümleyi anlamak önemlidir. PARTITION BY ve ORDER BY, OVER yan tümcesinin iki olası yan tümcesidir. OVER yan tümcesinin ORDER BY ifadesi, işlevin yürütülmesi için satırların belirli bir sırada gelmesi gerektiğinde desteklenir.

BÖLÜM ŞEKLİ

  • Sonuç kümesini bölümlere (satır grupları) bölen isteğe bağlı bir maddedir. Daha sonra her bir bölüme ROW NUMBER() fonksiyonu uygulanır ve her bir bölüme ayrı ayrı sıra numarası atanır.
  • Bölümlemeyi cümleye göre atlarsak, ROW_NUMBER işlevi tüm sonucu tek bir bölüm olarak ele alacak ve yukarıdan aşağıya sıralamayı sağlayacaktır.

TARAFINDAN SİPARİŞ

Bu cümle, her bölüm içindeki sonuç kümesinin satırlarını sıralamamıza olanak tanır. ROW_NUMBER() işlevi sıraya bağlı olduğundan bu gerekli bir cümledir.

Örnek

ROW_NUMBER fonksiyonunun SQL Server tablosunda nasıl çalıştığını bir örnekle anlayalım. Öncelikle 'adlı bir tablo oluşturacağız' Kişiler ' aşağıdaki ifadeyi kullanarak:

android'de mesaj oyunları
 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 ); 

Daha sonra aşağıdaki ifadeyi kullanarak bu tabloya bazı kayıtlar ekleyeceğiz:

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

Daha sonra verileri kullanarak doğrulayın. SEÇME ifade. Aşağıdaki çıktıyı alacağız:

SQL Server Satır Numarası

1. Basit ROW_NUMBER() Örneği

Aşağıdaki ifade kişinin ayrıntılarını görüntüler ve sıralı bir tam sayı ekler ROW_NUMBER() işlevini kullanarak her satıra:

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

Burada, ROW_NUMBER() fonksiyonunun tüm sonuç kümesini tek bir bölüm olarak ele alması için PARTITION BY yan tümcesini belirtmedik. İfadenin yürütülmesinden sonra aşağıdaki çıktıyı alacağız:

SQL Server Satır Numarası

2. Bölümler Örneği Üzerinden ROW_NUMBER()

Bu örnekte kullanılan ROW NUMBER() işlevi, bir tablodaki bölüm içindeki her kayda sıralı bir sayı sağlar. Yıl değiştiğinde her zaman satır numarasını yeniden başlattı:

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

Burada PARTITION BY cümleciğini kullandık. 'Kişiler' tabloyu buna göre bölümlere ayırın 'yıllar' kolon. Çalıştırdıktan sonra aşağıdaki çıktıyı alacağız:

SQL Server Satır Numarası

3. ROW_NUMBER() Sayfalandırma Örneği

Sayfalandırma için ROW_NUMBER() fonksiyonunu da kullanabiliriz. Örneğin Bir uygulamada bir kişinin tüm bilgilerini sayfalar halinde almak istiyorsak, öncelikle ROW_NUMBER() işlevini kullanarak her satıra sıralı bir sayı atayacağız. İkinci olarak satırları istenen sayfaya göre sıralayın.

bayt dizisini dizeye dönüştür

Aşağıdaki ifade bunu daha açık bir şekilde açıklamaktadır:

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