Menu
CoddyTech
flag Ar iconالعربيةdown icon

معيار PARTITION BY

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

خيار آخر لعبارة OVER () هو PARTITION BY

يتيح لنا ترقيم الصفوف لكل مجموعة على حدة 

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

idtype
132t1
52t2
92t1
154t3
198t1
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1

سيؤدي هذا إلى إنشاء عمود يرقّم صفوف كل نوع بشكل منفصل، بترتيب id (تظهر النتيجة أدناه مجمّعة حسب النوع):

idtyperow_num
92t11
132t12
198t13
52t21
154t31

لدى id 92 القيمة row_num 1 لأنه أصغر id في type t1.

ملاحظة: تتطلب ROW_NUMBER() عبارة ORDER BY ضمن OVER() لتحديد كيفية ترقيم الصفوف داخل كل قسم.

يمكننا حتى تحديد أعمدة متعددة داخل PARTITION BY:

ROW_NUMBER() OVER (PARTITION BY type, hue ORDER BY id)
challenge icon

التحدي

سهل

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

  • doors: id، publication_year
  • doors_specs: id، country، color

يقوم مصنع ببناء الأبواب. ويحتاج إلى ترقيم الأبواب لكل مجموعة من country وcolor التي لها publication_year أصغر من 2000. سمِّ هذا العمود row_num.

يجب ترقيم الأبواب داخل كل مجموعة بترتيب تصاعدي حسب id الخاص بها. يجب تجاهل الأبواب التي لا تحتوي على مواصفات. رتِّب النتيجة النهائية بترتيب تصاعدي حسب id. 

جرّب بنفسك

quiz iconاختبر نفسك

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

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

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