دالة ROW_NUMBER
جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 57 من 72.
تُجري دوال النافذة حسابات عبر مجموعة من صفوف الجدول المرتبطة بالصف الحالي. وعلى خلاف دوال التجميع العادية، لا تضغط دوال النافذة النتائج في صف واحد.
تكون مفيدة بشكل خاص عندما تحتاج إلى:
- حساب الإجماليات التراكمية
- ترتيب العناصر ضمن المجموعات
- مقارنة الصفوف الحالية بالصفوف السابقة/التالية
- تحليل الاتجاهات عبر الفترات الزمنية
على سبيل المثال، إليك بعض الأمثلة الواقعية على حالات استخدام window functions:
- تحليل المبيعات
- احسب المبيعات التراكمية حتى كل سنة (1995، 1997، 1999)
- اعثر على المنتجات الأكثر مبيعًا لكل ربع سنة
- الإحصاءات الرياضية
- تتبّع أعداد الميداليات الأولمبية عبر السنوات المختلفة
- حدّد الرياضيين المتصدّرين في كل فترة من فترات المنافسة (2000، 2004، 2008)
ROW_NUMBER() هي واحدة من أبسط دوال window. فهي تُسنِد رقمًا تسلسليًا فريدًا إلى كل 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 على تعليمات الترتيب والتقسيم للتحكم في كيفية عمل الترقيم.
التحدي
سهلالجداول والأعمدة المتاحة:
liquids:id،density
اجلب جميع السوائل التي تزيد كثافتها عن 5.677.
رقّم النتيجة (استخدم الدالة ROW_NUMBER()) وسمِّ هذا العمود row_num
جرّب بنفسك
-- رقّم كل صف من النتيجة المُصفّاة باستخدام دالة نافذة
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2الشروط
أساسيات الشروطالكلمة المفتاحية ANDالكلمة المفتاحية ORالكلمة المفتاحية NOTدمج شروط متعددةالأقواسالقيم المنطقية Booleans8الإحصاء
دوال التجميع المدمجة - الجزء الأولدوال التجميع المدمجة - الجزء الثانيالتجميع - الجزء الأولالتجميع - الجزء الثانيالاستعلامات الفرعية - الجزء الأولالاستعلامات الفرعية - الجزء الثانيمراجعة - متجر إجمالي الأرباحمراجعة - متجر السكوترمراجعة - متجر القهوة11دوال النافذة - الجزء الأول
دالة ROW_NUMBERمعيار ORDER BYمعيار PARTITION BYPARTITION و ORDERدوال LEAD و LAGملخص - LEAD و LAGملخص - الصورملخص - الصناديق3تنسيق محدد للنتائج
قيم Nullترتيب النتائج - الجزء الأولترتيب النتائج - الجزء الثانيمراجعة - شركة للأمن السيبرانيتحديد عدد السجلاتمراجعة - مصنع مركبات6تحديات تمهيدية
مراجعة - الانتخابات البرلمانيةمراجعة - اعتقال الشرطة للمجرمينمراجعة - حاوية مشروبات البارمراجعة - هندسة أعمدة جديدة9جداول متعددة
الربط الأساسي - الجزء الأولالربط الأساسي - الجزء الثانيمراجعة - الربط (Join)الربط الذاتي (Self Join)مراجعة - الربط الذاتي (Self Join)الاتحاد (Union)تبسيط الاستعلامات، الكلمة المفتاحية WITHمراجعة - استعلامات WITHمراجعة - مقاول العقارات12Window Functions الجزء الثاني
دوال RANK و DENSE_RANKمراجعة - RANK و DENSE_RANKدالة NTILEدوال التجميعمعيار ROWS و RANGEتدرّب بنفسك: Playground لـ SQL