GROUP BY etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
GROUP BY etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

19 Mayıs 2014 Pazartesi

SQL'de COMPUTE ve COMPUTE BY Kullanımı

  • COMPUTE sorgumuzdaki kolonları Aggregate Fonksiyonlar ile kullanmamızı sağlar.
  • COMPUTE tüm sonuç kümesini listeler ve bu listenin altında tek bir detay satırı görüntüler. 
  • Farklı olarak tek sorguda 2 tane sonuç listesi bize döndürür. 2.liste detay listesidir. 
  • COMPUTE ile kullanılan sütun SELECT ifadesinde yer almalıdır.
  • COMPUTE BY kullanarak daha detaylı gruplandırma da yapılabilir.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu 1:
SELECT productid, orderid, quantity FROM [Order Details]
ORDER BY productid, orderid COMPUTE SUM(quantity)

(Sipariş detayları (Order Details) tablosundaki tüm satırları listeler ve kayıt kümesinin sonuna tüm ürünlerin genel toplamını verir.)

Örnek Sorgu 2:
SELECT productid, orderid, quantity FROM [order details]WHERE orderid<10250 ORDER BY orderid,productid COMPUTE SUM(quantity) BY orderid COMPUTE SUM(quantity)

(Sipariş Detayları (Order Details) tablosundaki tüm satırları listeler ve her sipariş altına sipariş genel toplamını verir. Son olarak ise tüm siparişlerdeki genel toplam görüntülenir.)  

NOT : SQL Server 2008 RS sonrası sürümlerde COMPUTE ve COMPUTE BY çalışmamaktadır. MSDN makalelerinde COMPUTE ve COMPUTE BY için SQL Server 2008 RS sonrası sürümlerde kaldırılacağı ve yerine ROLLUP kullanılması tavsiye edilmektedir. Detaylı bilgi için tıklayınız.

GROUPING Fonksiyonu

  • SQL Server'da Fonksiyonlar, hesaplamalarda ve özellikle sistem hakkında bilgi almada yaygın olarak kullanılan araçlardır. Transact-SQL (T-SQL) programlama dilinde değişik kategorilerle adlandırılan fonksiyonlar vardır. Bunlardan en yaygını veriler üzerinde işlem yapan toplama ya da gruplama olarak adlandırabileceğimiz aggregate fonksiyonlarıdır. 
  • GROUPING Aggregate (Gruplama) Fonksiyonudur.
  • GROUP BY ile kullanılan ROLLUP ve CUBE ile elde edilen sonuç listesini GROUPING fonksiyonu daha kolay değerlendirip yorumlamamızı sağlar. 
  • Sütunlarda özet bilgiler için 1, detay bilgiler için 0 değeri görüntülenir.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu 

Örnek Sorgu :
SELECT OrderID, GROUPING(OrderID), ProductID,GROUPING(ProductID), SUM(quantity) AS 'Toplam Sipariş'
FROM [order details] WHERE OrderID < 10250
GROUP BY OrderID, ProductID WITH CUBE ORDER BY OrderID, ProductID


Sorgumuzda sütunlara dikkat edelim. OrderID alanı NULL olarak görünen kayıtlar tüm siparişlerdeki ürünlerin toplamlarını göstermektedir.

18 Mayıs 2014 Pazar

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.)


17 Mayıs 2014 Cumartesi

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.)



Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü