شرح صفوف ومحتوى الفقرة
يقارن الجدول التالي بين أهم دوال وصيغ النوافذ التحليلية في MySQL 8:
| دالة / صيغة النافذة | نمط الكتابة في SQL | سلوك التعادل والحدود | الاستخدام الهندسي الأمثل |
|---|---|---|---|
دالة تجميع مع OVER | SUM(col) OVER (PARTITION BY p ORDER BY o) | تحتفظ بجميع الصفوف التفصيلية | حساب النسب المئوية والمجاميع التراكمية الجارية |
دالة ROW_NUMBER | ROW_NUMBER() OVER (PARTITION BY p ORDER BY o) | أرقام فريدة متتالية (1, 2, 3) | إزالة التكرار واختيار أحدث سجل وحيد لكل عميل |
RANK و DENSE_RANK | DENSE_RANK() OVER (PARTITION BY p ORDER BY o) | DENSE_RANK لا تترك فجوات | لوحات الصدارة واستخراج أعلى N سجلات بكل فئة |
LAG و LEAD | LAG(col, 1, 0) OVER (PARTITION BY p ORDER BY o) | تُرجع القيمة الافتراضية عند الأطراف | حساب فروق النمو الشهري والمقارنة بالصف السابق والتالي |
ملخص الدرس: أتقنّا في هذا الدرس استخدام جملة OVER (PARTITION BY ... ORDER BY ...) لحساب المجاميع والنسب التراكمية دون طي الصفوف، وقارنّا بين دوال الترتيب ROW_NUMBER وRANK وDENSE_RANK، وبنينا نمط أعلى السجلات لكل فئة، وقارنّا الصفوف المتجاورة عبر LAG وLEAD.
الخطوة التالية والدرس القادم: في الدرس القادم نبدأ وحدة العروض والفهرسة بدراسة «العروض الافتراضية CREATE VIEW والعروض القابلة للتحديث في MySQL».
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تمنحك دوال النوافذ مع OVER وPARTITION BY وDENSE_RANK وLAG تحليلات متقدمة ومجاميع تراكمية دقيقة مع الاحتفاظ بكامل تفاصيل الصفوف. الخطوة التالية: انتقل إلى درس «العروض الافتراضية CREATE VIEW والعروض القابلة للتحديث في MySQL».