GROUP BY
تجميع الصفوف لحساب قيمة لكل مجموعة GROUP BY
GROUP BY يجمع الصفوف المتشابهة في عمود معيّن ضمن مجموعات، ليُطبّق عليها دوال تجميع مثل COUNT وSUM وAVG فترجع صفًا واحدًا لكل مجموعة.
GROUP BY يقسّم نتيجة الاستعلام إلى مجموعات حسب قيم عمود واحد أو أكثر، ثم تُطبَّق دوال التجميع (COUNT، SUM، AVG، MIN، MAX) على كل مجموعة على حدة فتُرجع صفًا ملخّصًا واحدًا لكل مجموعة بدل كل الصفوف الأصلية.
كل عمود يظهر في SELECT بدون دالة تجميع يجب أن يكون موجودًا في GROUP BY أيضًا، لأن قاعدة البيانات لا تعرف أي قيمة تختار من بين صفوف المجموعة الواحدة لعمود غير مجمّع.
الصياغة
SELECT column, AGG_FUNC(other_column) FROM table GROUP BY column;
📄 مثال
SELECT city, COUNT(*) AS user_count FROM users GROUP BY city;
أهم النقاط
| النقطة | الوظيفة |
|---|---|
| COUNT(*) | عدد الصفوف في كل مجموعة |
| SUM(col) | مجموع قيم عمود رقمي في كل مجموعة |
| AVG(col) | متوسط قيم عمود رقمي في كل مجموعة |
| تجميع بعدة أعمدة | GROUP BY col1, col2 يُنشئ مجموعة لكل توليفة فريدة من القيمتين |
💡 نصائح عملية
- استخدم HAVING بعد GROUP BY لتصفية المجموعات نفسها (مثل مجموعات عدد صفوفها أكبر من 10)
- إن احتجت تفاصيل الصفوف الفردية بجانب قيمة مجموعتها فكّر بدالة نافذة (Window Function) بدل GROUP BY
⚠️ أخطاء شائعة
- وضع عمود في SELECT بلا دالة تجميع وبلا وجوده في GROUP BY — خطأ ترفضه أغلب قواعد البيانات
- استخدام WHERE لتصفية نتيجة دالة تجميع بدل HAVING
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار SQL الكامل بالعربي.