Kurumsal Otomasyon Çözümlerinde Zirve

OLAP Functions-Row_Number()

ROW_NUMBER() Fonksiyonu

Row_Number() fonksiyonu , OLAP (Online Analytical Processing) fonksiyonlarından en çok kullanılanlardan bitanesi. MSSQL Analysis Service’te DMX sorgularıyla kullanılan bu yapıya ait bir kaç fonksiyonuda T-SQL ile kullanabiyoruz. Görevi aslında çok basit,sorgu sonucuda gelen kayıtlarınıza sıra numarası vermeye ve bölümlemeye yarar. Fakat bu küçük özellik bazen çok işinize yarıyabilir.
Örneğin;
Aşağıdaki script’i  SQL’serverınızda çalıştırın ve örnekte kullanacağımız tabloyu oluşturalım.
CREATE TABLE [dbo].[urunler](
      [id] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
      [urun] [varchar](50) NULL,
      [sgiris] [smalldatetime] NULL
)
Aşağıdaki şekildede verilerimizi girelim.
olap-functions-row-number-1

olap-functions-row-number-1

Ufak bir örnek yaparak Row_Number() fonksiyonunu nasıl çalıştığına bakalım.
SELECT ROW_NUMBER() OVER(ORDER BY urun) AS sira,* FROM urunler
olap-functions-row-number-2

olap-functions-row-number-2

Test ettiğinizde urunler tablonuzun urun kolonuna göre sıralı ver her satır için bir sıra numarası verdiğini göreceksiniz. Burada bilmeniz gereken Row_Number() fonksiyonu OVER ifadesiyle çalışır ve tablonuzu hangi kolon yada kolonlara göre nasıl sıralanacağını belirtmeniz gerekir.
Bir başka örnek;
SELECT ROW_NUMBER() OVER(ORDER BY sgiris desc) AS sira,urun,sgiris FROM urunler
Burada ise tabloyu sgiris kolonuna göre sıraladık ve bu düzene göre Row_Number() fonksiyonu sıra numarası verdi.
Örneğin Ürün stoğumuza sondan 3. olarak giren ürünün ismini bulmak istersek,Row_Number() fonksiyonu ile bunu kolaylıkla yapabiliriz.
SELECT urun from
(SELECT ROW_NUMBER() OVER(ORDER BY sgiris desc) AS sira,urun,sgiris FROM urunler) AS t
WHERE sira=3
Row_Number() fonksiyonunu bir başka kullanımı iste partition by ifadesi iledir. Partition by ile aynı olan değerleri gruplayarak kendi içlerinde sıra numaraları verebilirsiniz.
Örneğin;
SELECT ROW_NUMBER() OVER(partition BY urun ORDER BY urun) AS sira,*
FROM urunler ORDER BY urun
Sorgu sonucu aşağıdaki şekilde olacaktır.
olap-functions-row-number-3

olap-functions-row-number-3

Yorum Yapılmamış

Bir cevap yazın