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,HAVINGvəSELECT-dən əvvəl icra olunur.
HAVING:
- Sətir qruplarına tətbiq olunur.
- Aritmetik funksiyaları istifadə edə bilər.
WHEREvəGROUP BY-dən sonra, ammaSELECT-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