Sobes.tech
Junior

SQL'de WHERE ve HAVING ifadeleri arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

WHERE satırları önce gruplandırma yapmadan filtreler. HAVING ise GROUP BY ile oluşturulan grupları, sonra filtreler.

WHERE:

  • Bireysel satırlara uygulanır.
  • Toplam fonksiyonları (COUNT, SUM, AVG, MIN, MAX) kullanamaz.
  • GROUP BY, HAVING ve SELECT'den önce çalışır.

HAVING:

  • Satır gruplarına uygulanır.
  • Toplam fonksiyonları kullanabilir.
  • WHERE ve GROUP BY'den sonra, ama SELECT'den önce çalışır.

Örnek:

WHERE ile Moskova şehrindeki müşterileri bulun, ve toplam sipariş tutarları 1000'den fazla olanları seçin (HAVING).

SELECT customer_id, SUM(order_amount)  -- Müşteri ID'si ve sipariş toplamını seç
FROM orders  -- Siparişler tablosundan
WHERE city = 'Moskova'  -- Satırları filtrele, sadece Moskova'daki siparişler
GROUP BY customer_id  -- Satırları müşteri ID'sine göre grupla
HAVING SUM(order_amount) > 1000;  -- Grupları filtrele, toplam sipariş tutarı 1000'den fazla olanlar