أخي الكريم
عندما تقوم بعمل group by عند اي استعلام يمكنك استخدام أحد هذه الدوال المساعدة وهي rollup , cube , grouping sets ولمعرفة الفرق بينهم سنفترض اننا نريد الاستعلام عن مجموع مرتبات الموظفين وفقاً للوظائف jobs والأقسام deptno من جدول emp فإن الطبيعي ان يكون الاستعلام select deptno , job , sum(sal) from emp group by (deptno , job) order by deptno , job; وهنا النتيجة ستكون مجموع المرتبات لكل قسم مع كل وظيفة فإذا أدخلت هنا rollup ليصبح الاستعلام group by rollup (deptno , job) فسوف يتم التنفيذ على مرحلتين الأولى كالسابقة تماماً ثم سيتم عمل group by (deptno ) فقط ثم إجمالي كلي أي كأنه بدون grouping بمعنى أن rollup يقوم بعمل فرز تصاعدي درجة درجة أما بالنسبة لcube فإنها تقوم بعمل كل التباديل المختلفة فبالنسبة للمثال السابق فإنها ستنفذ نفس عمل rollup بالإضافة إلى group by (job ) أما بالنسبة لgrouping sets فإنها تقوم بعمل grouping بالنسبة لdeptno فقط وبالنسبة لjob فقط دون ان تجمعهما معاً