اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

يمكن إعطاء رتبة لكل سطر من الاستعلام باستخدام دالة ()RANK في SQL فهي تعيد ترقيم تصاعدي بدءاً من 1 ولأعلى لكل سطر حسب شرط الترتيب.

وتعتبر هذه الدالة من دوال النافذة window function وتعمل مع دالة OVER لتحديد المجالات الجزئية للترقيم وعلاقة الترتيب.

لعمل ترقيم شامل لكل الموظفين حسب ترتيب الراتب، لن نقوم بعمل تجزئة للبيانات، أي بدون PARTITION

سوف نمرر لدالة OVER علاقة الترتيب حسب الراتب فقط:

SELECT 
	*, 
	RANK() OVER (ORDER BY salary) salary_rank
FROM 
	employees;

والنتيجة:

rank-over.JPG.c8d642449ded851a5e3b52b3abc925f8.JPG

أما لعمل ترتيب جزئي حسب كل قسم، علينا تجزئة البيانات باستخدام PARTITION مع تمرير رقم القسم ثم علاقة الترتيب:

لاحظ التجزئة حسب رقم الفرع:

SELECT 
*, 
RANK() OVER (
  		PARTITION BY department_id
  		ORDER BY salary
	) salary_rank
FROM 
	employees

والنتيجة:

rank-over-partition.JPG.69666f49d92218f2f5343cddf63b15d6.JPG

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...