جملة الشرط SQL HAVING

ما هي جملة الشرط SQL HAVING ؟


جملة الشرط SQL HAVING تم إضافتها إلي لغة SQL لأنه لا يمكن استخدام الكلمة الأساسية WHERE مع الدالات التجميعية.

بناء جملة SQL HAVING


SELECT column_name(s)FROM table_nameWHERE conditionGROUP BY column_name(s)HAVING conditionORDER BY column_name(s);

قاعدة بيانات تجريبية
CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Swede


أمثلة علي جملة SQL HAVING

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;
يسرد بيان SQL التالي عدد العملاء في كل بلد. تضمين فقط البلدان التي لديها أكثر من 5 عملاء.
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;
يسرد بيان SQL التالي عدد العملاء في كل بلد، ويتم ترتيبه من الأعلى إلى المنخفض "يشمل فقط البلدان التي لديها أكثر من 5 عملاء".
قاعدة بيانات تجريبية أخري

وإختيار من جدول "الموظفين":




EmployeeIDLastNameFirstNameBirthDatePhotoNotes
1
Davolio
Nancy
1968-12-08
EmpID1.pic
Education includes a BA....
2
Fuller
Andrew
1952-02-19
EmpID2.pic
Andrew received his BTS....
3
Leverling
Janet
1963-08-30
EmpID3.pic
Janet has a BS degree....

أمثلة أخري علي HAVING


SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM (Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

يسرد بيان SQL التالي الموظفين الذين قاموا بتسجيل أكثر من 10 أوامر.

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = 'Davolio' OR LastName = 'Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;



يسرد بيان SQL التالي إذا قام الموظفون "Davolio" أو "Fuller" بتسجيل أكثر من 25 طلباً.

0 التعليقات

إرسال تعليق