گروه بندی (Group By)
«گروه بندی (GROUP BY)» ردیف های هم ارزش را کنار هم جمع می کند. سپس با توابع تجمعی، خلاصه سازی می کند؛ مثلاً تعداد مشتری هر کشور.
GROUP BY چیست؟
تابع تجمعی یعنی تابعی مثل COUNT، SUM، AVG، MIN، MAX که روی گروه ها حساب می کند. ستون های گروه بندی باید در SELECT باشند یا با تابع تجمعی بیایند.
سینتکس استاندارد
الگوی کلی را ببین. ابتدا فیلتر، سپس گروه بندی، و در پایان مرتب سازی.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
مثال 1: تعداد مشتری در هر کشور
اینجا هر کشور یک گروه است. COUNT تعداد مشتری همان کشور را می دهد.
SELECT COUNT(CustomerID),
Country
FROM Customers
GROUP BY Country;
مثال 2: مرتب سازی نزولی بر اساس تعداد
پس از گروه بندی می توانی بر اساس نتیجه COUNT مرتب کنی.
SELECT COUNT(CustomerID),
Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
مثال 3: GROUP BY همراه با JOIN
سفارش های هر ارسال کننده را می شماریم. ابتدا JOIN، سپس GROUP BY.
SELECT Shippers.ShipperName,
COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;
نکته: برای فیلتر روی نتیجه گروه بندی از HAVING استفاده کن؛ WHERE قبل از گروه کار می کند. برای مرتب سازی نهایی هم ORDER BY به کار ببر.
گام های تمرینی
- مثال 1 را اجرا کن و نتیجه را ببین.
- یک WHERE اضافه کن و کشور خاصی را فیلتر کن.
- در مثال 3، نوع JOIN را تغییر بده.
جمع بندی سریع
- GROUP BY ردیف های مشابه را گروه می کند.
- COUNT و SUM روی گروه ها محاسبه می شوند.
- HAVING بعد از گروه بندی فیلتر می کند.
- ORDER BY برای مرتب سازی نهایی است.