Sobes.tech
Junior

SQL-də WHERE və HAVING ifadələri arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

WHERE sətirləri əvvəl qruplaşdırmadan əvvəl filtr edir. HAVING isə GROUP BY ilə yaradılmış qrupları, sonra filtr edir.

WHERE:

  • Fərdi sətirlərə tətbiq olunur.
  • Aritmetik funksiyaları (COUNT, SUM, AVG, MIN, MAX) istifadə edə bilməz.
  • GROUP BY, HAVINGSELECT-dən əvvəl icra olunur.

HAVING:

  • Sətir qruplarına tətbiq olunur.
  • Aritmetik funksiyaları istifadə edə bilər.
  • WHEREGROUP BY-dən sonra, amma SELECT-dən əvvəl icra olunur.

Misal:

WHERE ilə Moskva şəhərində olan müştəriləri tapın və onların ümumi sifariş məbləği 1000-dən çox olanları seçin (HAVING).

SELECT customer_id, SUM(order_amount)  -- Müştəri ID və sifarişlərin cəmini seç
FROM orders  -- Sifarişlər cədvəlindən
WHERE city = 'Moskva'  -- Sətirləri filtr edir, yalnız Moskva sifarişləri
GROUP BY customer_id  -- Sətirləri müştəri ID-ə görə qruplaşdırır
HAVING SUM(order_amount) > 1000;  -- Qrupları filtr edir, yalnız sifarişlərin cəmisi 1000-dən çox olanlar