Az Bilinen Sorgulama Teknikleri

Table Sample Komutu

Table Sample komutu Sql Server 2005 ile gelen rastgele sayıda kayıt elde etmemizi sağlayan komuttur. Rastgele sayıda kayıt elde etmek için NewID() fonksiyonuda bulunmaktadır.Table Sample ile kayıtlar direkt olarak verilerin tutulduğu Page’lerden okunur ve ne kadar sayfanın okunacağı parametre olarak belirtilir.Table Sample komutunu iki şekilde çalıştırabiliriz.


select * from Customers tablesample (10 percent)

select * from Customers  tablesample  (50 rows)

Percent ile belirtilmiş sorguda pagelerden yüzde kaçını okuyacağını belirtir. Rows olarak belirtildiğinde 50 kayıt döneceği kesin değildir. Rows sorgu işlenmeden önce percenta çevirilir.Table Sample komutunda (Repeatable) seçeneği ile ilk dönen sonuç seti tekrar elde edilebilir.


select * from Customers tablesample (80 rows) repeatable(1000)

Except Komutu

Except operatörü; iki farklı sorgu sonucu karşılaştırıp ilk sonuç setinde olup, ikinci sorgu sonucunda olmayan kayıtları listeler.


select * from Customers except select* from CustomerCustomerDemo

Intersect Komutu

Intersect komutu iki farklı sonuç kümesinde ortak olan verilerin gösterilmesi için kullanılır.


select * from Customers intersect select* from CustomerCustomerDemo

Group By Rollup

Daha önce group by ile verilerimizi gruplamıştık. Raporlamalarda çok ihtiyaç duyulan ara toplam sonuçlarını group by rollup ile elde edebiliriz. AdventureWorks2012 database’i için bir örnek yapalım.


select SalesOrderID, isnull(cast(ProductID as nvarchar),'Toplam') ProductID ,sum(UnitPrice) from Sales.SalesOrderDetail
group by SalesOrderID,ProductID
with rollup

Sales.SalesOrderDetail tablosu için SalesOrderID ve ProductID ye göre gruplama yaparak ara toplamları elde ettik. SalesOrderID ye göre ara toplamları getirmiş olduk.

group by rollup

Group By Cube

Group By Rollup komutunda ProductID kolonu null olarak gelmiş bizde null yerine ‘Toplam’ yazdırmıştık. Group By Cube komutu ise group by içinde kullanılan tüm alanlar için ara toplam elde etmemizi sağladı.


select SalesOrderID,ProductID,sum(UnitPrice) from Sales.SalesOrderDetail
where ModifiedDate ='2007-07-02 00:00:00.000'
group by SalesOrderID,ProductID
with cube

group by cube

İyi çalışmalar…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir