Menu
Coddy logo textTech
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

سيؤدي هذا إلى إنشاء عمود يقوم بترقيم كل نوع داخل نفسه:

idtyperow_num
132t11
52t21
92t11
154t31
198t13

id 92 لديه row_num 1 لأنه أصغر id في type t1.

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

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

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

التحدي

سهل

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

  • <strong>doors</strong>: <strong>id</strong>, <strong>publication_year</strong>
  • <strong>doors_specs</strong>: <strong>id</strong>, <strong>country</strong>, <strong>color</strong>

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

يجب ترقيم الأبواب داخل كل مجموعة بترتيب تصاعدي حسب الـ id الخاص بها. يجب تجاهل الأبواب التي ليس لها مواصفات (specs). قم بفرز النتيجة النهائية بترتيب تصاعدي حسب الـ id

ورقة مرجعية

استخدم PARTITION BY في OVER()</clause لترقيم الصفوف داخل المجموعات:</p> <pre><code class="language-sql">SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type) as row_num FROM table1

يمكنك التقسيم حسب أعمدة متعددة:

ROW_NUMBER() OVER (PARTITION BY type, hue)

جرّب بنفسك

quiz iconاختبر نفسك

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

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