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

دالة NTILE

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

تُرقّم NTILE(n) الصفوفَ بتقسيمها إلى n أجزاء متساوية تقريبًا. وغالبًا ما تُستخدم لتحسين الأداء؛ فقد لا يكون إرسال كميات كبيرة من البيانات دفعة واحدة فكرة جيدة، لذا تتيح هذه الدالة إرسال أجزاء أصغر في كل مرة.

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

idlevel
14
24
35
46
57
67
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1

سيُرجع هذا:

idlevelpieces
141
241
352
462
573
673

حصلنا على 3 أجزاء: المستوى 4 في الجزء 1، والمستويان 5 و6 في الجزء 2، والمستوى 7 في الجزء 3.
عندما لا يكون عدد الصفوف قابلًا للقسمة بالتساوي على n، توزّع NTILE الصفوف بالتساوي قدر الإمكان، مع ظهور المجموعات الأكبر أولًا. على سبيل المثال، إذا كان لديك 9 صفوف واستخدمت NTILE(4)، فسيكون التوزيع كما يلي:

  • المجموعة 1: 3 صفوف
  • المجموعة 2: صفّان
  • المجموعة 3: صفّان
  • المجموعة 4: صفّان

يضمن هذا ألا تختلف أي مجموعة عن أي مجموعة أخرى بأكثر من صف واحد، وأن تُوزَّع أي صفوف إضافية على المجموعات ذات الأرقام الأقل أولًا.

challenge icon

التحدي

سهل

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

  • creatures: creature_name، preference، has_legs (يحتوي على 'YES' أو 'NO')

في هذا التحدي، لدينا مخلوقات تريد العثور على شريك مناسب. نحتاج إلى مساعدتها في العثور على الشريك المناسب.

لكل مخلوق تفضيل مُمثّل برقم. إذا كان رقما المخلوقين متقاربين بما يكفي، فقد يكونان مناسبين لبعضهما.

قسّم المخلوقات إلى 3 مجموعات بناءً على قيم تفضيلاتها، لكن ضع في الاعتبار المخلوقات التي لها أرجل فقط (حيث has_legs = 'YES'). أعد creature_name وpreference وgroup_number الخاص بها (1 أو 2 أو 3). رتّب النتائج حسب preference بترتيب تصاعدي.

جرّب بنفسك

quiz iconاختبر نفسك

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

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

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