İleri Sorgulama Teknikleri (MS SQL)
AZ BİLİNEN SORGULAMA TEKNİKLERİ
- Table Sample Komutu
- PIVOT Tablo
- UNPIVOT Tablo
- EXCEPT Komutu
- INTERSECT Komutu
SORGU SONUÇLARININ ÖZETİ
- GROUP BY CUBE
- GROUP BY ROLLUP
- Grouping Sets Komutu
WINDOW FONSİYONLARI
- ROW_NUMBER Fonksiyonu
- RANK Fonksiyonu
- DENSE_RANK Fonksiyonu
- NTILE Fonksiyonu
- LEAD ve LAG () Fonksiyonu
- FIRST_VALUE() ve LAST_VALUE() Fonksiyonu
- PERCENT_RANK() ve CUME_DIST() Fonksiyonu
- PERCENTILE_CONT() ve PERCENTILE_DISC() Fonksiyonu
KULLANILAN DİĞER SORGU YAPILARI
- Drived Table
- Common Table Expression (CTE)
- WITH RESULT SETS Komutu
- FETCH ve OFFSET Komutları İle Sayfalama
**************************************************
AZ BİLİNEN SORGULAMA TEKNİKLERİ
- Table Sample Komutu: Rastgele sayıda kayıt elde etmemizi sağlar. ORDER BY NEWID()
- PIVOT Tablo: Satırları sütünlara çevirmemizi sağlar.
- UNPIVOT Tablo: Oluşturulan pivot tablonun tersi işlemi görür.
- EXCEPT Komutu: İki farklı sorgu sonucu karşılaştırılırken intersect operatöründen farklı olarak sadece ilk sonuç setinde olup, ikinci sorgu sonucunda olmayan kayıtları listelememizi sağlar. Bu işlemi NOT IN ifadesi ile de yapalibiliriz.
- INTERSECT Komutu: İki farklı sorgu sonucunun kesişimini yani ortak ifadeleri elde etmek için kullanılır.
SORGU SONUÇLARININ ÖZETLENMESİ
- GROUP BY CUPE: Tüm verilere ait genel toplamı gösterir
- GROUP BY ROLLUP: Gruplama yaptığımız veriler üzerinde hem ara toplamı hem de genel toplam değerinin verir.
- GROUPING SETS Komutu: Özellikle raporlama için ihtiyaç duyulur diğer operatörlere göre daha hızlı çalışır. Örneğin bir müşteriye ait siparişlerin yıllara göre toplamlarını bulmada kullanabiliriz, farklı yazım sitilleri de vardır.
WINDOW FONSİYONLARININ KULLANILMASI
- ROW_NUMBER Fonksiyonu: Veri kümesindeki gruplanmış her değer için sayısal ve artan bir değer üretir. Tüm veri kümesi bir parça olarak alınabilir yada veriler belli kolonlara göre gruplandırılabilir. (Bu fonksiyon ile numaralandırma yapma daha çok dinamik olarak sayfalamada kullanılır. Örneğin müşterinizin yaptığı tüm alışveriş bilgilerini gösterirken hepsini bir sayfaya yerleştirmek yerine ilk sayfada son yaptığı 5 alışverişini gösterip bir sonraki sayfaya diğerleri gösterilebilir.)
- RANK Fonksiyonu: Row_Number fonksiyonu gibi bir veri kümesi içinde gruplama yaparak her bir veriyi belirtilen kritere göre sıralama yaparak numaralandırır. Row_Number farkı sıralama yaparken aynı değere sahip satırlarda aynı sıra numara vermesidir.
- DENSE_RANK Fonksiyonu: Rank fonksiyonunda aynı sıra numarası verilse bile bir sonraki gelen kayda sıra numarası verirken araya tekrar eden kayıt sayısı kadar boşluk eklenir. bu boşluk verilmeden sıralama yapmak isteniyor ise bu fonk. kullanılır. Yani sıra Rank da 1,2,2,2,5 giderken DenseRank da 1,2,2,3 diye devam eder.
- NTILE Fonksiyonu: Diğer derecenlendirme fonk lardan farklı olarak veri kümesini gruplarken her bir grup içinde en fazla kaç satır olacğının bilgisini verir. Örn: 17 personele ait bilgilerinin bulunduğu personel tablosunu NTILE ile 5 e gruplarsak her gruptaki kayıt sayısı şu şekilde olur: 17/5=3,4 olup yukarı yuvarlar 4 olur böylece birinci grupta 4 kayıt olur.
- LEAD ve LAG () Fonksiyonu: Lead() fonksiyonu, belirlenen ofset değerine göre kendinden sonraki gelen değeri döndürür. Lag() ise tam tersi mantıkta çalışır. Örneğin bir müşterinin bir önceki ve bir sonraki sipariş numarasını getirilir.
- FIRST_VALUE() ve LAST_VALUE() Fonksiyonu: 2012 ile birlikte gelmiştir. Sıralanmış veri kümesinde ki ilk ve son değeri döndürür.
- PERCENT_RANK() ve CUME_DIST() Fonksiyonu: Percent_Rank() fonksiyonu RANK() fonksiyonuna benzer şekilde çalışarak her bir grup içinde sayı değeri üreterek rütbeleme yapar. 0 veya 1 sonuç döndürür, ilk değer 0 dan başlar. Cume_Dist() fonksiyonu ise Percent_Rank ile benzer şekilde çalışır. Farkı ise rütbeleme yaparken başlangıç değeri 0 dır. (Satış komisyouna göre komisyon yüzdelerini sıralamada kullanılabilir.)
- PERCENTILE_CONT() ve PERCENTILE_DISC() Fonksiyonu: PERCENTILE_CONT() herhangi bir grup içerisinde CUME_DIST değerine eşit, yoksa en büyük CUME_DIST e ait değeri döndürür. PERCENTILE_DISC() ise CUME_DIST değerine eşit ve büyük yakın değerlerin ortalamasını döndürür.
KULLANILAN DİĞER SORGU YAPILARI
- Drived Table: Sorgu sonucunu sanal bir tablo gibi sorgulanmasını sağlar.
- Common Table Expression (CTE): Geçici olarak sorgu sonucunu tutup daha sonra üzerinde çalışmamızı sağlar. Bu özellik 2005 de gelmiş olup, 2012 ile genişletilmiştir.
- WITH RESULT SETS Komutu: http://www.mesutx.com/sql-server-2012-with-result-sets/
- FETCH ve OFFSET Komutları İle Sayfalama: http://sqlservernedir.blogspot.com/2017/07/offset-ve-fetch-next-ozelliginin-kullanm.html
Yorumlar
Yorum Gönder