بتاريخ: 15 نوفمبر 200817 سنة comment_143086 أخي الكريم عندما تقوم بعمل 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 فقط دون ان تجمعهما معاً تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.