TOP

SQL GROUP BY

وصف SQL GROUP BY

تقوم عبارة GROUP BY بتجميع الصفوف ذات القيم نفسها في صفوف تلخيصية، مثل "ابحث عن عدد العملاء في كل بلد".

غالبًا ما يتم استخدام عبارة GROUP BY مع الوظائف المجمعة (COUNT()، MAX()، MIN()، SUM()، AVG()) لتجميع مجموعة النتائج بواسطة عمود واحد أو أكثر.


GROUP BY بناء الجملة

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s)

قاعدة البيانات التوضيحية

ما يلي هو نموذج من جدول "Customers" ("العملاء") لقاعدة البيانات "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

أمثلة SQL GROUP BY

تسرد عبارة SQL التالية عدد العملاء في كل بلد:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country

تسرد عبارة SQL التالية العملاء في كل بلد، مرتبة من الأعلى إلى الأدنى:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country 
ORDER BY COUNT(CustomerID) DESC

قاعدة البيانات التوضيحية

ما يلي هو نموذج من الجدول "Orders" ("Orders") لقاعدة البيانات "Northwind":

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082
4102518431996-07-081
5102527641996-07-092

والعينة من الجدول "Shipers" ("المرسلون"):

ShipperIDShipperNamePhone
1Speedy Express(503) 555-9831
2United Package(503) 555-3199
3Federal Shipping(503) 555-9931

GROUP BY مع JOIN مثال

تسرد عبارة SQL التالية عدد الطلبات المرسلة من قبل كل مرسل:

Run SQLSELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM Orders 
LEFT JOIN Shippers 
ON Orders.ShipperID = Shippers.ShipperID 
GROUP BY ShipperName