شرح صفوف ومحتوى الفقرة
يلخّص الجدول التالي الأنماط القياسية لجملة GROUP BY ودالة GROUP_CONCAT() في MySQL 8:
| النمط / الميزة | مثال الصياغة | القاعدة الأساسية في MySQL 8 |
|---|---|---|
| تجميع بعمود واحد | GROUP BY dept_id | ينتج صفاً واحداً لكل قيمة فريدة (وتجتمع قيم NULL في مجموعة واحدة) |
| تجميع متعدد الأعمدة | GROUP BY dept_id, role | ينتج صفاً واحداً لكل ثنائية فريدة من العمودين |
| الوضع القياسي الصارم | ONLY_FULL_GROUP_BY | يجب أن يكون كل عمود في SELECT إما مجمّعاً أو داخل دالة تجميعية |
| دمج النصوص البسيط | GROUP_CONCAT(name) | يدمج القيم غير الفارغة بفاصلة , افتراضية |
| دمج مخصص كامل | GROUP_CONCAT(DISTINCT x ORDER BY x SEPARATOR ', ') | يزيل التكرار ويرتّب القيم ويفصل بينها بالفاصل المحدد |
ملخص الدرس: أتقنت في هذا الدرس تقسيم الصفوف إلى مجموعات عبر GROUP BY، والتجميع الهرمي بعدة أعمدة، والالتزام بقاعدة ONLY_FULL_GROUP_BY القياسية، ودمج النصوص وترتيبها داخل كل مجموعة عبر GROUP_CONCAT().
الخطوة التالية والدرس القادم: سنتعلّم في الدرس القادم كيفية تصفية المجموعات بعد تجميعها باستخدام جملة HAVING والفرق الجوهري بينها وبين جملة WHERE.
SQL
-- Department summary with sorted employee list
SELECT dept_id,
COUNT(*) AS emp_count,
SUM(salary) AS dept_payroll,
GROUP_CONCAT(
full_name ORDER BY full_name ASC SEPARATOR ', '
) AS members
FROM employees
WHERE is_active = 1
GROUP BY dept_id
ORDER BY dept_id ASC;
خلاصة المعرفة ومحطة الانتقال
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنّا في هذا الدرس تجميع الصفوف بجملة GROUP BY ودمج القيم عبر GROUP CONCAT في MySQL 8 مع أمثلة عملية.
الخطوة التالية والدرس القادم
أكمل التدريبات والاختبار التفاعلي أدناه قبل الانتقال إلى الدرس التالي في مسار MySQL.