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

Window OVER vs Grouping نافذة OVER مقابل التجميع

تعلّم دوال النوافذ التحليلية OVER و PARTITION BY والترتيب في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

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

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

تقوم استعلامات التجميع التقليدية عبر GROUP BY بطيّ ودمج جميع صفوف المجموعة في سطر تلخيصي واحد، مما يخفي تفاصيل السجلات الفردية. أما دوال النوافذ التحليلية (Window Functions) في MySQL 8، والتي تتميز بوجود جملة OVER (...)، فتحسب المجاميع والترتيب عبر مجموعة من الصفوف مع الاحتفاظ بكل صف فردي في النتيجة:

  • عرض التفصيل والإجمالي جنباً إلى جنب: يمكنك عرض قيمة كل طلب بجانب الإجمالي العام لجميع الطلبات أو حساب النسبة المئوية لكل صف في مسح واحد.
  • النافذة الشاملة الكلية: عند ترك قوسي جملة OVER فارغين تشمل النافذة التحليلية جميع صفوف النتيجة كإطار واحد.
مخطط دوال النوافذ التحليلية OVER و PARTITION BY ودوال الترتيب والمقارنة في MySQL 8
SQL
-- Show each order alongside grand total and percentage share
SELECT
  order_id,
  user_id,
  total_amount,
  SUM(total_amount) OVER () AS grand_total,
  ROUND(
    total_amount * 100.0 / SUM(total_amount) OVER (), 2
  ) AS pct_of_total
FROM orders WHERE status = 'paid';