4.7 SQL HAVING
جملة SQL HAVING
جملة HAVING تُستخدم لتحديد شرط على نتائج مجمّعة (بعد استخدام GROUP BY).
✅ الفرق الأساسي:
WHERE➜ لتصفية الصفوف قبل التجميعHAVING➜ لتصفية النتائج بعد التجميع
الصيغة:
SELECT column_name, AGGREGATE_FUNCTION(column_name)
FROM table_name
WHERE condition
GROUP BY column_name
HAVING condition;
مثال عملي: العملاء اللي عدد طلباتهم أكبر من 5
SELECT CustomerID, COUNT(OrderID) AS OrderCount
FROM Orders
GROUP BY CustomerID
HAVING COUNT(OrderID) > 5;
⬅ الاستعلام بيجّمع الطلبات حسب CustomerID، وبعدين يعرض العملاء اللي عندهم أكتر من 5 طلبات.
مثال باستخدام SUM()
SELECT ProductID, SUM(Quantity) AS TotalQuantity
FROM OrderDetails
GROUP BY ProductID
HAVING SUM(Quantity) > 100;
⬅ يعرض المنتجات اللي مجموع الكمية المطلوبة منها أكتر من 100.
الجمع بين WHERE و HAVING
SELECT CustomerID, COUNT(OrderID) AS OrderCount
FROM Orders
WHERE OrderDate >= '2024-01-01'
GROUP BY CustomerID
HAVING COUNT(OrderID) > 5;
⬅ بيحسب عدد الطلبات بعد تاريخ معين، ثم يعرض العملاء اللي عدد طلباتهم أكتر من 5.
مقارنة بين WHERE و HAVING
| الخاصية | WHERE | HAVING |
|---|---|---|
| يُستخدم مع | الصفوف (rows) | النتائج المجمعة (groups) |
| يُستخدم قبل | GROUP BY | بعد GROUP BY |
| دوال التجميع | ❌ لا يمكن استخدامها | ✅ يمكن استخدامها (COUNT(), SUM()...) |
تعليقات
إرسال تعليق