4.6 SQL - GROUP BY
جملة SQL GROUP BY
جملة GROUP BY تُستخدم مع الدوال التجميعية (Aggregate Functions) زي:
COUNT()SUM()AVG()MAX()MIN()
... لتجميع النتائج حسب قيمة أو أكثر.
الصيغة:
SELECT column_name, AGGREGATE_FUNCTION(column_name)
FROM table_name
WHERE condition
GROUP BY column_name;
مثال: عدد الطلبات لكل عميل
عندنا جدول Orders فيه CustomerID و OrderID:
SELECT CustomerID, COUNT(OrderID) AS OrderCount
FROM Orders
GROUP BY CustomerID;
مثال باستخدام SUM()
من جدول OrderDetails نجيب إجمالي الكمية لكل منتج:
SELECT ProductID, SUM(Quantity) AS TotalQuantity
FROM OrderDetails
GROUP BY ProductID;
استخدام GROUP BY مع WHERE
SELECT CustomerID, COUNT(OrderID) AS OrderCount
FROM Orders
WHERE OrderDate >= '2024-01-01'
GROUP BY CustomerID;
⬅ عدد الطلبات لكل عميل من بداية 2024 فقط.
GROUP BY مع أكثر من عمود:
SELECT Country, City, COUNT(CustomerID) AS CustomerCount
FROM Customers
GROUP BY Country, City;
GROUP BY مع HAVING
HAVING بتفلتر النتائج بعد ما يتم التجميع:
SELECT CustomerID, COUNT(OrderID) AS OrderCount
FROM Orders
GROUP BY CustomerID
HAVING COUNT(OrderID) > 5;
⬅ يعرض العملاء اللي عندهم أكتر من 5 طلبات فقط.
الفرق بين WHERE و HAVING:
| WHERE | HAVING |
|---|---|
قبل GROUP BY (يشتغل على الصفوف) |
بعد GROUP BY (يشتغل على النتائج المجمّعة) |
تعليقات
إرسال تعليق