Derecelendirme ve satır kümesi işlevlerini kullanma
Sıralama ve satır kümesi işlevleri tek bir değer döndürmediğinden skaler işlevler değildir. Bu işlevler giriş olarak bir satır kümesini kabul edip çıkış olarak bir satır kümesi döndürür.
Derecelendirme işlevleri
Derecelendirme işlevleri, kullanıcı tanımlı bir satır kümesine göre hesaplamalar yapmanıza olanak tanır. Bu işlevler derecelendirme, uzaklık, toplama ve dağıtım işlevlerini içerir.
Bu örnekte RANK işlevi, ListPrice'e göre en yüksek fiyat 1 olarak derecelenmiş bir derecelendirme hesaplamak için kullanılır:
SELECT TOP 100 ProductID, Name, ListPrice,
RANK() OVER(ORDER BY ListPrice DESC) AS RankByPrice
FROM Production.Product AS p
ORDER BY RankByPrice;
Sorgu sonuçları şöyle görünebilir:
ProductID
Veri Akışı Adı
ListPrice
RankByPrice
749
Yol-150 Kırmızı, 62
3578.27
1
750
Yol-150 Kırmızı, 44
3578.27
1
751
Yol-150 Kırmızı, 48
3578.27
1
771
Mountain-100 Gümüş, 38
3399.99
4
772
Mountain-100 Gümüş, 42
3399.99
4
775
Dağ-100 Siyah, 38
3374.99
6
...
...
...
...
ÜZERİNDE
OVER yan tümcesini kullanarak verilerin içindeki bölümleri veya gruplandırmaları tanımlayabilirsiniz. Örneğin, aşağıdaki sorgu önceki örneği genişleterek her kategorideki ürünlerin fiyat tabanlı derecelendirmelerini hesaplar.
SELECT c.Name AS Category, p.Name AS Product, ListPrice,
RANK() OVER(PARTITION BY c.Name ORDER BY ListPrice DESC) AS RankByPrice
FROM Production.Product AS p
JOIN Production.ProductCategory AS c
ON p.ProductCategoryID = c.ProductcategoryID
ORDER BY Category, RankByPrice;
Bu sorgunun sonuçları şuna benzer olabilir:
Kategori
Ürün
ListPrice
RankByPrice
Bib-Şort
Erkek Bib-Şort, S
89.99
1
Bib-Şort
Erkek Bib-Şort, M
89.99
1
Bisiklet Rafları
Otostop Rafı - 4 Bisikletli
120
1
Bisiklet Standları
Çok Amaçlı Bisiklet Standı
159
1
Şişeler ve Kafesler
Dağ Şişesi Kafesi
9,99
1
Şişeler ve Kafesler
Yol Şişesi Kafesi
8.99
2
Şişeler ve Kafesler
Su Şişesi - 30 oz.
4,99
3
Alt Braketler
HL Alt Köşeli Ayraç
121.49
1
Alt Braketler
ML Alt Köşeli Ayraç
101.24
2
Alt Braketler
LL Alt Braket
53.99
3
...
...
...
...
Not
Birkaç satırın aynı derece değerine sahip olduğuna ve bazı değerlerin atlandığına dikkat edin. Bunun nedeni yalnızca RANK'i kullanmamızdır. Gereksinime bağlı olarak, aynı derece değerindeki bağlardan kaçınmak isteyebilirsiniz. Sıralama değerini gerektiği gibi DENSE_RANK, NTILE ve ROW_NUMBER diğer işlevlerle denetleyebilirsiniz. Bu işlevlerle ilgili ayrıntılar için Transact-SQL başvuru belgelerine bakın.
Satır kümesi işlevleri
Satır kümesi işlevleri, FROM yan tümcesinde veri kaynağı olarak kullanılabilecek bir sanal tablo döndürür. Bu işlevler, satır kümesi işlevinin kendisine özgü parametreleri alır. OpenDATASOURCE, OPENQUERY, OPENROWSET, OPENXML ve OPENJSON içerir.
OPENDATASOURCE, OPENQUERY ve OPENROWSET işlevleri, uzak veritabanı sunucusuna sorgu geçirmenizi sağlar. Ardından uzak sunucu bir sonuç satırları kümesi döndürür. Örneğin, aşağıdaki sorgu, SalesDB adlı bir SQL Server örneğinden sorgunun sonuçlarını almak için OPENROWSET kullanır.
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=SalesDB;Trusted_Connection=yes;',
'SELECT Name, ListPrice
FROM AdventureWorks.Production.Product') AS a;
Uzak sunucuları kullanmak için sorguyu çalıştırdığınız SQL Server örneğinde bazı gelişmiş seçenekleri etkinleştirmeniz gerekir.
OPENXML ve OPENJSON işlevleri, yapılandırılmış verileri XML veya JSON biçiminde sorgulamanıza ve değerleri tablo satır kümesine ayıklamanıza olanak tanır.
Satır kümesi işlevlerinin ayrıntılı bir keşfi bu modülün kapsamının dışındadır. Daha fazla bilgi için Transact-SQL başvuru belgelerine bakın.