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

كيف أعطي رتبة RANK أو ترتريب جزئي لنتيجة استعلام SQL

سعيد يوسف

السؤال

بافتراض لدي جدول رواتب موظفين وأريد ترتريبهم تصاعدياً مع إضافة ترقيم يدل على ترتريب راتب الموظف كيف أستطيع عمل ذلك؟

وهل يمكن تحديد التريب حسب كل قسم؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...