انتقل إلى محتوى الدرس

Multi Level Hierarchy Rollups المجاميع التراكمية متعددة المستويات

افهم كيف يولّد WITH ROLLUP مجاميع فرعية متدرجة من اليمين إلى اليسار عند التجميع بعدة أعمدة.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

عند التجميع بعدة أعمدة، يولّد WITH ROLLUP المجاميع الفرعية تدريجياً من اليمين إلى اليسار عبر مستويات الهرم التجميعي:

  • المستوى الأول (صفوف التفصيل): في GROUP BY region, city WITH ROLLUP تظهر أولاً مجاميع كل مدينة داخل إقليمها.
  • المستوى الثاني (المجموع الفرعي للإقليم): يتحول العمود الأيمن city إلى NULL لإنتاج صف المجموع الفرعي الخاص بكل إقليم (region, NULL).
  • المستوى الثالث (المجموع العام الكلي): في النهاية يتحول العمودان معاً إلى (NULL, NULL) لإنتاج صف المجموع العام الكلي لجميع الأقاليم والمدن!

لذلك احرص دائماً على ترتيب أعمدة GROUP BY من المستوى الأوسع (كالإقليم أو السنة) على اليسار إلى المستوى الأدق (كالمدينة أو الشهر) على اليمين.

SQL
-- Multi-level rollup: per (dept, role), per dept, and grand total
SELECT dept_id,
       job_role,
       COUNT(*)    AS headcount,
       SUM(salary) AS payroll_usd
FROM employees
WHERE is_active = 1
GROUP BY dept_id, job_role WITH ROLLUP;