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

GROUPING

يُعدّ ROLLUP وCUBE معدّلين لـ GROUP BY. وكلاهما يحسب المجاميع الفرعية. يأخذ ROLLUP قائمة مرتّبة من الأعمدة، على سبيل المثال (day, month, year)، ويحسب المجاميع الفرعية عند كل مستوى من مستويات التجميع ثم المجموع الكلي. أما CUBE فيحسب المجاميع الفرعية لجميع التركيبات الممكنة للأعمدة المحددة. وتحدّد GROUPING أيّ الصفوف التي يعيدها ROLLUP أو CUBE هي تجميعات عليا، وأيّها صفوف كان سيعيدها GROUP BY من دون تعديل. تأخذ الدالة GROUPING عدة أعمدة كوسيط، وتُرجع قناع بتات.
  • تشير 1 إلى أن الصف الذي يعيده معدّل ROLLUP أو CUBE لـ GROUP BY هو مجموع فرعي
  • تشير 0 إلى أن الصف الذي يعيده ROLLUP أو CUBE هو صف ليس مجموعًا فرعيًا

GROUPING SETS

افتراضيًا، يحسب المُعدِّل CUBE المجاميع الفرعية لجميع التركيبات الممكنة للأعمدة المُمرَّرة إلى CUBE. ويتيح لك GROUPING SETS تحديد التركيبات التي تريد حسابها تحديدًا. يُعدّ تحليل البيانات الهرمية حالة استخدام مناسبة لمُعدِّلات ROLLUP وCUBE وGROUPING SETS. المثال هنا عبارة عن جدول يحتوي على بيانات حول توزيعة Linux وإصدارها المثبَّتين عبر مركزي بيانات. وقد يكون من المفيد عرض البيانات بحسب التوزيعة والإصدار والموقع.

تحميل بيانات تجريبية

استعلامات بسيطة

اعرض عدد الخوادم في كل مركز بيانات حسب التوزيعة:

مقارنة عدة عبارات GROUP BY مع GROUPING SETS

تقسيم البيانات من دون CUBE أو ROLLUP أو GROUPING SETS:
الحصول على نفس المعلومات باستخدام GROUPING SETS:

مقارنة CUBE مع GROUPING SETS

يوفّر CUBE في الاستعلام التالي، CUBE(datacenter,distro,version)، تدرجًا هرميًا قد لا يكون منطقيًا. فلا معنى للنظر إلى إصدار عبر التوزيعتين، لأن Arch وRHEL لا يتبعان دورة إصدارات واحدة ولا معايير تسمية الإصدارات نفسها. ويُعد مثال GROUPING SETS الوارد بعد هذا المثال أنسب، لأنه يجمع distro وversion في المجموعة نفسها.
قد لا يكون للإصدار في المثال أعلاه معنى واضح إذا لم يكن مرتبطًا بتوزيعة. ولو كنّا نتتبّع إصدار النواة، فقد يكون ذلك منطقيًا لأن إصدار النواة يمكن أن يرتبط بأيٍّ من التوزيعتين. لذا قد يكون استخدام GROUPING SETS، كما في المثال التالي، خيارًا أفضل.
آخر تعديل في ٢٥ يونيو ٢٠٢٦