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()...)

تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

Entity Framework - مقدمة عن Entity Framework