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

17 Haziran 2012 Pazar

39. SUBQUERIES-HAVING Dönüşümü

  • İlişkili alt sorgularla elde ettiğimiz sonuçları aynı zamanda HAVING işlemi ile de elde edebiliriz. Bu bize kullanım çeşitliliği sağlar.
Örnek: İnceleyeceğimiz iki örnekte aynı kategorideki ürünlerden birim fiyatı ortalama birim fiyatından yüksek olan ürünleri kategoriye göre listelenmesini istiyoruz. İlk örneğimizde herhangi bir dönüşüm yapmadan gerekli koşullarımızı sağlıyoruz.

Sorgu:
SELECT ProductName,CategoryID,UnitPrice FROM Products AS p1
    WHERE p1.UnitPrice>(SELECT AVG(UnitPrice) FROM Products AS p2 WHERE p1.CategoryId=p2.CAtegoryId)
    ORDER BY CategoryId




Örnek: Bu örneğimizde INNER JOIN ve HAVING kullanarak aynı sonucu listeliyoruz.

Sorgu:
SELECT p1.ProductName,p1.CategoryID,p1.UnitPrice FROM Products AS p1
    INNER JOIN Products AS p2 WITH (NOLOCK) ON p1.CategoryID=p2.CategoryID
    GROUP BY p1.ProductName,p1.CategoryID,p1.UnitPrice
    HAVING p1.UnitPrice>AVG(p2.UnitPrice)
    ORDER BY p1.CategoryId


Ders 40 'a geçebilirsiniz.

21 Nisan 2012 Cumartesi

21. HAVING Kullanımı

  • Toplam fonksiyonlarını kullanırken kısıtlama yapacağımız zaman WHERE özelliğini kullanamayız. 
  • HAVING yantümcesi, GROUP BY ile elde edilecek satırları kısıtlamak için kullanılır.
  •  İşlev olarak WHERE yantümcesi gibi çalışır fakat WHERE yantümcesi gruplama işlemlerinden önce, HAVING yantümcesi ise GROUP BY'dan sonra uygulanır.
Örnek: Dikkat edilmesi gereken HAVING özelliğinin gruplamadan sonra kullanıldığıdır.WHERE özelliğini FROM dan sonra normal olarak kullanabiliriz. Bu sorguda stoklarımızda 500'den az kalan ürün kategorilerimizi listeliyoruz.

Sorgu: SELECT CategoryID, SUM(UnitsInStock) AS 'Miktar' FROM Products GROUP BY CategoryId HAVING SUM(UnitsInStock)<500


Ders 22'ye geçebilirsiniz.