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

Generating Subtotals WITH ROLLUP توليد المجاميع الفرعية ROLLUP

أضف صفوف المجموع العام والمجاميع الفرعية تلقائياً إلى استعلامات GROUP BY باستخدام ميزة WITH ROLLUP.
1 صفوف تعليمية
MySQL
8 مشاهدة

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

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

تتطلب معظم التقارير المالية والإدارية عرض مجاميع كل فئة متبوعةً بصف المجموع العام الكلي في نهاية التقرير. بدلاً من تنفيذ استعلامين منفصلين، يمكنك إلحاق العبارة WITH ROLLUP مباشرةً بعد جملة GROUP BY.

  • صف التجميع الفائق (Super-Aggregate): عند التجميع بعمود واحد مثل GROUP BY category WITH ROLLUP، يعرض MySQL صفوف الفئات المعتادة ثم يضيف صفاً أخيراً يمثّل الإجمالي العام لكل الفئات.
  • علامة NULL في عمود التجميع: يضع المحرك القيمة NULL في عمود التجميع داخل صف المجموع العام، بينما تعرض الدوال التجميعية COUNT و SUM و AVG حصيلة الجدول الكلي.

يحسب محرك MySQL صفوف WITH ROLLUP أثناء المسحة التجميعية نفسها دون إعادة قراءة الجدول من القرص.

المجاميع التراكمية WITH ROLLUP ودالة GROUPING وترتيب تنفيذ الاستعلام

مسار التنفيذ المنطقي: 1. FROM ثم 2. WHERE ثم 3. GROUP BY ثم 4. HAVING ثم 5. SELECT ثم 6. DISTINCT ثم 7. ORDER BY ثم 8. LIMIT
مخطط توضيحي لدرس المجاميع الفرعية عبر ROLLUP والترتيب المنطقي لتنفيذ الاستعلام
مخطط توضيحي لدرس المجاميع الفرعية عبر ROLLUP والترتيب المنطقي لتنفيذ الاستعلام
SQL
-- Category totals plus automatic Grand Total row at the end
SELECT category,
       COUNT(*)       AS items_count,
       SUM(stock_qty) AS total_units
FROM products
WHERE is_active = 1
GROUP BY category WITH ROLLUP;