Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دالة ROW_NUMBER

جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 57 من 72.

تنفذ الدوالي النافذية (Window functions) الحسابات عبر مجموعة من صفوف الجدول المترابطة بالصف الحالي. وعلى عكس دوال التجميع العادية، لا تقوم الدوالي النافذية بدمج النتائج في صف واحد.

وهي مفيدة بشكل خاص عندما تحتاج إلى:

  • حساب الإجماليات التراكمية (running totals)
  • ترتيب العناصر داخل المجموعات
  • مقارنة الصفوف الحالية بالصفوف السابقة/التالية
  • تحليل الاتجاهات عبر الفترات الزمنية

على سبيل المثال، إليك بعض الأمثلة الواقعية لحالات استخدام دالّات النافذة (window functions):

  • تحليل المبيعات
    • حساب المبيعات التراكمية حتى كل سنة (1995، 1997، 1999)
    • إيجاد المنتجات الأكثر مبيعاً لكل ربع سنة
  • الإحصائيات الرياضية
    • تتبع عدد الميداليات الأولمبية عبر السنوات المختلفة
    • تحديد الرياضيين المتصدرين في كل فترة منافسة (2000، 2004، 2008)

تُعد الدالة ROW_NUMBER() واحدة من أبسط الدوال النافذية (window functions). حيث تقوم بتعيين رقم تسلسلي فريد لـ each row في result set. وإليك كيفية استخدامها:

SELECT column1, column2,
       ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;

من الضروري استخدام البند OVER مع ROW_NUMBER() : ROW_NUMBER() OVER ()

على سبيل المثال:

SELECT product_name, sale_date,
       ROW_NUMBER() OVER () as row_num
FROM sales;

يضيف هذا عمود row_num والذي يحسب من 1 إلى الإجمالي الكلي لعدد الصفوف.

ملاحظة: يمكن أن تلحق الجملة `OVER` بتعليمات الترتيب والتقسيم للتحكم في كيفية عمل الترقيم.

challenge icon

التحدي

سهل

الجداول والأعمدة المتاحة:

  • <strong>liquids</strong>: <strong>id</strong>, <strong>density</strong>

قم بجلب جميع السوائل التي يزيد لكثافتها (density) عن 5.677.

قم بترقيم النتيجة (استخدم الدالة ROW_NUMBER()) وسمِّ هذا العمود row_num

جرّب بنفسك

-- رقم كل صف من النتيجة المفلترة باستخدام دالة نافذة
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ SQL