Microsoft SQL Server etiketine sahip kayıtlar gösteriliyor.
Microsoft SQL Server etiketine sahip kayıtlar gösteriliyor.

SQL'de WITH ROLLUP ve WITH CUBE Kullanımları

  • GROUP BY ile bir toplama işlevi kullandığımızda her farklı değer için sadece sonuç satırı görüntülenir. Gruplandırdığımız değerlerin detaylarını farklı komutlar kullanarak görüntüleyebiliriz.
  • ROLLUP Grup değerlerini özetlemek için kullanılır.
  • CUBE GROUP BY ile belirtilen sütunların tüm olası eşleşmelerini özetler.
  • CUBE komutunun ROLLUP'dan farkı bütün sütünlarında null ile ara toplamlarını vermesidir.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1: SELECT ProductID AS 'Ürün ID', OrderID AS 'Sipariş ID', SUM(quantity) AS 'Toplam Sipariş'  FROM [order details]  WHERE OrderID < 10250
GROUP BY OrderID, ProductID WITH CUBE ORDER BY OrderID, ProductID
(Sipariş ID 10250’den küçük olan kayıtların ve ürünlerin detaylı toplamlarını listeleyelim.)

Örnek Sorgu 2: SELECT ProductID AS 'Ürün ID',OrderID AS 'Sipariş ID', SUM(quantity) AS 'Toplam Sipariş'  FROM [order details] WHERE OrderID < 10250
GROUP BY ProductID, OrderID WITH ROLLUP ORDER BY ProductID, OrderID
(Sipariş ID 10250’den küçük olan kayıtların ve ürünlerin detaylı toplamlarını listeleyelim.)

SQL'de HAVING Kullanımı

  • Toplam fonksiyonlarını kullanırken kısıt girilmesi gerektiğinde WHERE komutunu kullanamayız. HAVING, GROUP BY ile elde edilecek satırları kısıtlamak için kullanılır.
  • Görev ve işlev bakımından WHERE gibi çalışır fakat WHERE gruplama işlemlerinden önce, HAVING ise GROUP BY'dan sonra kullanılır.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu : SELECT ProductID, SUM(quantity) AS total_quantity FROM [order details] GROUP BY ProductID HAVING SUM(quantity) > 1300
(Toplam sipariş miktarı 1300 adetten fazla olan ürünkodlarını listeleyelim.)


SQL'de GROUP BY Kullanımı

  • GROUP BY ile belirtilen sütun yada sütunlardaki aynı değere sahip satırları tek bir satırda birleştirmeyi sağlarız.
  • DISTINCT anahtar kelimesi yanlızca benzersiz satırları listelemek için kullanılmaktadır.
  • GROUP BY genellikle toplam fonksiyonlarıyla (Aggregate Function) kullanılır. 
  • GROUP BY ile belirtilen sütunlar SELECT ifadesinde de yeralmalıdır.
  • GROUP BY sorgularında kullanılan en yaygın toplama işlevleri MIN, MAX, SUM ve COUNT'dır.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu : SELECT ProductID AS 'Ürün ID', SUM(quantity) AS 'Toplam Sipariş' FROM [order details] GROUP BY ProductID
(Sipariş detayları tablosundan productid alanına göre gruplandırarak ve her grubun toplam sipariş miktarını belirterek listeleyelim.)


SQL'de WITH TIES Kullanımı

  • WITH TIES, ORDER BY ile sıralanan sonuçlarda son kayıt ile aynı değerde olan kayıtların da listelenmesini sağlar. Bu durumda sonuç belirtilen n sayısından daha fazla olabilir.
  • WITH TIES sadece ORDER BY ile birlikte kullanılmaktadır.

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1: SELECT TOP 3 OrderID, ProductID, quantity FROM [order details] ORDER BY quantity DESC
(Sipariş detayları tablosundan (order details) en yüksek siparişi verilen 3 ürünü listeleyelim.)


TOP n ile çalıştırdığımız sorgularımızı eğer WITH TIES ile çalıştırırsak n den farklı sonuç listesi görebiliriz. Örnek Sorgu 1′de de görüldüğü gibi en çok satış yapılan ilk 3 ürünü sıraladık. Fakat sıradaki 6., 7. ürünler de 120′şer adet satıldıysa? Onlar listeye giremeyecek çünkü biz 3 satır görmek istediğimizi belirttik. Bu gibi durumlarda WITH TIES'e başvuruyoruz. Şimdi aynı sorguya WITH TIES uygulayalım ve sonuçları görelim.

Örnek Sorgu 2: SELECT TOP 3 WITH TIES OrderID, ProductID, quantity FROM [order details] ORDER BY quantity DESC
(Sipariş detayları tablosundan (order details) en yüksek siparişi verilen 3 ürünü listeleyelim.)

 

WITH TIES kullanımında önemli nokta örnek sorgumuzdaki ilk 3 değeri listeledikten sonra en son satıra ait quantity değeri daha varsa onlarıda getirmesidir. İlk sorguda 3 sonuçtan sonuncusunda quantity değerinin 120 olduğunu görmekteyiz. WITH TIES kullanılan sorguda quantity değeri 120 olan bütün değerlerin getirilmesini sağladık. 

SQL'de TOP n, TOP n Percent ve DISTINCT Kullanımları

İlk n Kaydın Görüntülenmesi - TOP n
  • Belirli sayıda satır çekmek için SQL'de TOP ifadesi kullanılır.
  • TOP n ifadesiyle tablonun baştan ilk n satırını çekebiliriz.
  • TOP n veya TOP n PERCENT anahtar kelimeleri ORDER BY  yan tümcesini ile birlikte kullanılmalıdır. Aksi halde listelenen verilerde WHERE ifadesi ile belirtilen koşula uyan kayıtlar rastgele dizileceğinden, istediğimiz sonucu elde edemeyebiliriz.
TOP n Kullanımı : SELECT TOP n * FROM <Tablo Adı>

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1: SELECT TOP 10 OrderID,ProductID, quantity FROM [order details] ORDER BY quantity DESC
(Sipariş detayları tablosundan (order details) en yüksek siparişi verilen 10 ürünü listeleyelim.) 



Belli Yüzdeli Kayıtların Görüntülenmesi - TOP n Percent
  • Tablodaki kayıtların % n kadarı görüntülenebilir.
  • Örneğin tablomuzda 100 kayıt var ise TOP 10 Percent ifadesi ile bu kayıtların %10'u görüntülenir.
TOP n Percent Kullanımı : SELECT TOP n Percent * FROM <Tablo Adı>

Örnek Sorgu 2: SELECT TOP 5 Percent OrderID,ProductID, quantity FROM [order details] ORDER BY quantity DESC
(Sipariş detayları tablosundan (order details) en yüksek siparişi verilen ürünlerin %5'ini listeleyelim.) 



Tekrarsız Kayıtların Görüntülenmesi - DISTINCT

DISTINCT Kullanımı : SELECT DISTINCT <sütun adı> FROM <tablo adı> [WHERE <koşul>]
  • Bazen veriler arasındaki benzerlikleri kaldırarak sadece benzer olmayanları listeletmek isteyebiliriz. Böyle durumlarda SELECT DISTINCT sadece tek olan (unique) kayıtların sonuç listesinde yer almasını sağlar. 
  • Bir sütunda belirli bir kelime iki veya daha fazla sayıda tekrarlanıyor olabilir. Fakat DISTINCT ile her tekrarlanan kayıt sadece bir kez listelenir.  
  • DISTINCT SQL komutu SELECT komutu ile birlikte kullanılmaktadır.
Örnek Sorgu 3: SELECT DISTINCT City FROM Customers
(Müşteriler (Customers) tablosundaki  Şehir (City) sutunlarını listeleyelim. Ve aynı değerlerin tekrarlanmamasını sağlayalım.) 

SQL'de AVG, MAX, MIN, SUM, COUNT Fonksiyonlarının Kullanımları

Aggregate Function (Hesaplama Fonksiyonları)

Bazen tablolar üzerinde kayıtların listelenmesi yerine kayıtlar üzerinde hesaplamalar yaptırarak sonuçların listelenmesine ihtiyaç duyarız. Bu nedenle tüm kayıtları döndürmeden sadece matematiksel sonuçlar döndürmemiz gerekebilir. SQL bu gibi durumlar için özel fonksiyonlar sunmaktadır. Bu Fonksiyonlara Aggregate Function (Hesaplama Fonksiyonları) denir.

Peki bu fonksiyonlar bizlere neler sunmaktadır ;
  • Sutundaki tüm değerlerin toplamını bulmak.
  • Sutundaki tüm degerlerin ortalamasını bulmak.
  • Sutundaki en büyük veya en küçük değeri bulmak.
  • Toplam kayıt sayılarını hesaplamak.
Aggregate Function (Hesaplama Fonksiyonları)


Not : Hesaplama fonksiyonları kullanılırken NULL değerler dikkate alınmamaktadır.


 

MAX ve MIN Fonksiyonları Kullanımı
  • MAX fonksiyonu, bir sütundaki en yüksek değeri verir. 
  • Boş (NULL) değerler işleme katılmaz. 
  • MAX fonksiyonu alfabetik sıralamadaki ilk metinsel ifadeyi de bulmamızı sağlar.
  • MIN fonksiyonu bir sütundaki kayıtlardaki en küçük değeri verir. 
  • Boş (NULL) değerler işleme katılmaz.   
  • MIN fonksiyonuda MAX fonksiyonu gibi alfabetik sıralamadaki son metinsel ifadeyi  bulmamızı sağlar
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1: SELECT MAX(UnitPrice) AS Maksimum_Fiyat FROM Products
(Ürünler (Products) tablosundaki en yüksek fiyatlı ürünü listeleyelim.)  
 
 
Örnek Sorgu 2: SELECT MIN(UnitPrice) AS Minimum_Fiyat FROM Products
(Ürünler (Products) tablosundaki en küçük fiyatlı ürünü listeleyelim.) 


Örnek Sorgu 3: SELECT MAX(CompanyName) AS En_Sondaki_Müşteri FROM Customers
(Alfabetik listeye göre en sonda yer alan müşteriyi görüntüleyelim.)  
 
 
SUM, AVG ve COUNT Fonksiyonları Kullanımı
  • SUM fonksiyonu belirtilen sütundaki sayısal değerlerin bir toplamını geri döndürür. 
  • AVG fonksiyonu belirtilen sütundaki ortalama değeri verir. 
  • AVG hesaplama sırasında boş (NULL) değerleri işleme almaz.
  • SQL'de COUNT Kullanımı için tıklayınız.
Örnek Sorgu 4: SELECT SUM(Quantity) AS Toplam_Ürün FROM [Order Details]
(Toplam kaç adet malın sipariş verildiğini bulalım.) 


Örnek Sorgu 5: SELECT AVG(DISTINCT UnitPrice) AS tekil_ortalama_deger  FROM Products WHERE SupplierID = 22
(22 kayıt numaralı tedarikçiye ait ürünlerin tekil değerilerinin ortalama fiyatını almak isteyelim.) 
 

SQL'de AS Kullanımı

 Sütunların Ve Tabloların Yeniden Adlandırılması AS
  • Bazı durumlarda sorgulama yaparken sutunun ismi kullanıcı tarafından anlaşılmayabilir bu yüzden daha anlamlı sutun başlıkları kullanmak isteyebiliriz bu durumda Alias (AS) takma isimler kullanırız.
  • AS yardımcı kelimesini kullanarak sütunları farklı adlarla görüntüleyebiliriz.
  • Uzun tablo isimlerini de kullanımı daha kolay olacak şekilde değiştirebiliriz.
  • Alias kullanımı AS kelimesiyle veya [ ] parantez kullanılarak yazılabilir.
AS Kullanımı : SELECT <sütun adı> AS <yeni ad> FROM <tablo adı> AS <yeni tablo adı>

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1: SELECT AVG(UnitPrice) AS 'Avarage Price' FROM products
(Ürünler (Products) tablosundaki Birim Fiyatı (Unit Price) Ortalama Fiyat (Avarage Price) olarak listelenmiştir.) 


Örnek Sorgu 2: SELECT  COUNT(*) AS Müşteri_Sayısı FROM Customers 
(Müşteriler (Customers) tablosunda kaç tane müşterimiz var. Müşteri_Sayısı başlığıyla listeleyelim.)


SQL'de COUNT Fonksiyonu Kullanımı

  • COUNT fonksiyonu, belirtilen ölçütlerle eşleşen satır sayısını döndürür.
  • Kısaca ; veritabanındaki kayıtları sayabilmek için yerleşik COUNT fonksiyonunu kullanırız.

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

COUNT(*) Kullanımı :  SELECT COUNT(<sütun adı>) FROM <tablo adı> 
   
Örnek Sorgu 1: SELECT COUNT(*)AS [Sipariş Kayıt Sayısı]  FROM orders
(Siparişler (Orders) tablosundaki kayıt sayısını Sipariş Kayıt Sayısı başlığıyla listeleyelim.) 

Örnek Sorgu 2: SELECT COUNT(*) AS Ürün_Sayısı FROM Products WHERE SupplierID = 5
(Tedarikci Numarası  (SupplierID) 5 olan tedarikçiye ait ürünlerin sayısını öğrenelim.) 

COUNT DISTINCT Kullanımı :  SELECT COUNT(DISTINCT <sütun adı> FROM <tablo adı>

DISTINCT anahtar kelimesi COUNT ile birlikte kullanıldığında, belirtilen sütundaki benzersiz kayıtların sayısını verir

Örnek Sorgu 3: SELECT COUNT (DISTINCT CustomerID) FROM Orders
(Siparişlerin kaç farklı müşteriden alındığını öğrenelim.) 



SQL de Matematiksel ve Metinsel işlemler

  • Tablolardaki alanları kullanarak, matematiksel veya metinsel ifadeler ile yardımıyla sorgularımızın gücünü arttırabiliriz.
  • SQL matematiksel işlemlerin sonucunu otomatik olarak üretmeyi sağlayan özelliklere sahiptir. 

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu : SELECT OrderID, ProductID, (UnitPrice * Quantity) as TotalCost FROM [Order Details] WHERE (UnitPrice * Quantity) > 10000
(Birim fiyat (UnitPrice) alanı Miktar (Quantity) alanı ile çarpılarak toplam fiyat hesaplanır ve “TotalCost” (Toplam Maliyet) adı ile yeni bir alan olarak görüntülenir.) 

SQL'de ORDER BY Kullanımı

  • ORDER BY anahtar kelimesi satırları, bir veya daha fazla sütuna göre sıralamak için kullanılır.
  • ORDER BY ile hangi sütuna göre sıralayacağımızı ve sıralamanın artan veya azalan şekilde yapılacağını belirleriz. 
  • Sıralama artan (ASC) ya da azalan (DESC) olabilir.
  • Sıralama tipi belirtilmemiş ise SQL veriyi artan şekilde sıralar.
  • Sıralama yapılacak alanlar SELECT ifadesinde yer almak zorunda değildir.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1 : SELECT ProductName, UnitPrice FROM Products ORDER BY UnitPrice, ProductName
(Ürünler tablosunda ürün kodu, fiyatı ve ismini, önce fiyata göre, sonra da ürün adına göre görüntülemek isteyelim.

Örnek Sorgu 2 : SELECT ProductID, UnitPrice, ProductName FROM Products ORDER BY UnitPrice DESC
(Ürünler tablosunu fiyata göre azalan sırada listeleyelim.)

 























Örnek Sorgu 3 : SELECT * FROM Customers ORDER BY Country,City
(Müşteriler tablosunu Ülke ve Şehir kriteri vererek listeleyelim.

SQL'de SELECT DISTINCT Kullanımı

  • Bazen veriler arasındaki benzerlikleri kaldırarak sadece benzer olmayanları listeletmek isteyebiliriz. Böyle durumlarda SELECT DISTINCT sadece tek olan (unique) kayıtların sonuç listesinde yer almasını sağlar. 
  • Bir sütunda belirli bir kelime iki veya daha fazla sayıda tekrarlanıyor olabilir. Fakat DISTINCT ile her tekrarlanan kayıt sadece bir kez listelenir.  
  • DISTINCT SQL komutu SELECT komutu ile birlikte kullanılmaktadır.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu
 
Örnek Sorgu : SELECT DISTINCT City FROM Customers
(Müşteriler (Customers) tablosundaki  Şehir (City) sutunlarını listeleyelim. Ve aynı değerlerin tekrarlanmamasını sağlayalım.) 

SQL'de IS NULL ve IS NOT NULL Kullanımları

  • SQL'de tabloların veri alanlarına veri girilmezse o alanlara NULL değer girer.
  • NULL değeri boşluk (‘ ‘) veya sıfır (0) değerinden farklıdır. 
  • Değer atanmamış yani veri girilmemiş kayıtları listelemek için IS NULL kullanılır.
  • Bir ifadenin NULL olup olmadığını kontrol etmek için IS NOT NULL kullanılır
  • Kısaca NULL için karşılaştırma yaparken, IS NULL kullanılır. Boşluk olmayan alanlar için karşılaştırma yaparken ise IS NOT NULL kullanılır.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu
 
Örnek Sorgu 1 : SELECT  SupplierID,  CompanyName FROM Suppliers  WHERE Fax IS NULL
(Tedarikçiler (Suppliers) tablosundan fax bilgisi girilmemiş tedarikçileri listeleyelim. ) 


Örnek Sorgu 2 : SELECT  SupplierID,  CompanyName FROM Suppliers  WHERE Fax IS NOT NULL
(Tedarikçiler (Suppliers) tablosundan fax bilgisi girilmiş tedarikçileri listeleyelim. )