گروه بندی (GROUP BY)
«گروه بندی (GROUP BY)» ردیف های مشابه را یک جا خلاصه می کند. معمولاً با «توابع تجمیعی (Aggregate Functions)» مثل COUNT، SUM و AVG می آید. مثل شمردن تعداد دانش آموزان هر کلاس در مدرسه.
سینتکس گروه بندی
ابتدا داده ها را انتخاب کن. سپس در صورت نیاز فیلتر بده. بعد با GROUP BY دسته بندی کن. در پایان می توانی مرتب سازی انجام دهی.
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: مرتب سازی نزولی بر اساس تعداد
حالا همان خروجی را از بیشترین به کمترین مرتب می کنیم. ORDER BY فقط یک بار و در انتها می آید.
SELECT COUNT(CustomerID),
Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
مثال 3: GROUP BY همراه با JOIN
می خواهیم تعداد سفارش های هر «حامل (Shipper)» را ببینیم. با LEFT JOIN جدول ها را وصل می کنیم، سپس گروه بندی می کنیم.
SELECT Shippers.ShipperName,
COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY Shippers.ShipperName;
نکته: اگر پس از گروه بندی نیاز به فیلتر داری، از HAVING استفاده کن. برای مرور سریع، بخش گروه بندی را نشانه گذاری کن. مرتب سازی تکمیلی را هم در ORDER BY ببین.
گام های عملی سریع
- ستون های موردنیاز را در SELECT بنویس.
- در صورت نیاز، WHERE را اضافه کن.
- ستون های دسته بندی را در GROUP BY بده.
- توابع تجمیعی را روی ستون ها اعمال کن.
- در انتها، ORDER BY را برای کل خروجی بگذار.
جمع بندی سریع
- GROUP BY ردیف های مشابه را خلاصه می کند.
- با COUNT، SUM، AVG و… عالی کار می کند.
- HAVING بعد از گروه بندی فیلتر می کند.
- ORDER BY فقط یک بار و در انتها می آید.
- ستون های GROUP BY باید معنای تجمیع را بسازند.