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

دوال RANK و DENSE_RANK

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

تُعدّ ROW_NUMBER() أحد أنواع دوال الترتيب، وهناك دالتان إضافيتان: RANK() وDENSE_RANK().

تُرقّم الدالة RANK() الصفوف مثل ROW_NUMBER()، لكنها تمنح الصفوف المتطابقة الأرقام نفسها وتتخطّى أرقامًا. تشبه DENSE_RANK() الدالة RANK()، لكنها لا تتخطّى الأرقام.

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

idlevel
15
26
36
47
57
65
SELECT id, 
	ROW_NUMBER() OVER (ORDER BY level) as row_num,
	RANK() OVER (ORDER BY level) as row_rank,
	DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1

سيُرجع هذا:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

الشرح:

  • ROW_NUMBER(): فريد دائمًا: 1، 2، 3، 4، 5، 6
  • RANK():
    • level 5 (صفّان): يحصل كلاهما على الترتيب 1
    • level 6 (صفّان): يحصل كلاهما على الترتيب 3 (يتخطّى 2)
    • level 7 (صفّان): يحصل كلاهما على الترتيب 5 (يتخطّى 4)
  • DENSE_RANK():
    • level 5 (صفّان): يحصل كلاهما على الترتيب 1
    • level 6 (صفّان): يحصل كلاهما على الترتيب 2 (من دون تخطٍّ)
    • level 7 (صفّان): يحصل كلاهما على الترتيب 3 (من دون تخطٍّ)
challenge icon

التحدي

سهل

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

  • medals: region، medal_color، medal_count

أنشئ استعلامًا يعرض المنطقة، وإجمالي عدد الميداليات (مجموع جميع الميداليات بغض النظر عن اللون)، ونوعين من الترتيب:

  1. ترتيب regular_rank (مع وجود فجوات) استنادًا إلى مجموع الميداليات
  2. ترتيب dense_rank (من دون فجوات) استنادًا إلى مجموع الميداليات

رتّب النتيجة حسب:

order by total_medals desc, region asc

جرّب بنفسك

quiz iconاختبر نفسك

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

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

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