"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية الحصول على أعلى 5 قيم من عمود Oracle SQL؟

كيفية الحصول على أعلى 5 قيم من عمود Oracle SQL؟

تم النشر بتاريخ 2025-01-24
تصفح:245

How to Get the Top 5 Highest Values from an Oracle SQL Column?

Oracle SQL: كيفية استرداد أعلى 5 قيم في عمود

في استعلامات قاعدة البيانات، غالبًا ما يكون من الضروري قصر النتائج على صفوف ذات خصائص محددة، مثل القيمة الأعلى أو الأدنى في عمود معين. في Oracle SQL، يمكنك استخدام الوظائف التحليلية مثل RANK() أو DENSE_RANK() أو ROW_NUMBER() لهذا الغرض.

RANK() وDENSE_RANK() لأعلى القيم

تقوم وظائف التحليل مثل RANK() وDENSE_RANK() بتعيين تصنيف لكل صف بناءً على تصنيف محدد. لاسترداد أعلى 5 قيم في عمود، يمكنك استخدام تنسيق الاستعلام التالي:

SELECT *
FROM (
  SELECT , RANK() OVER (ORDER BY  DESC) AS rnk
  FROM 
)
WHERE rnk 

RANK() يعين ترتيبًا رقميًا لكل صف، بدءًا من 1، وهي أعلى قيمة. يقوم DENSE_RANK() بضغط الفجوات عند وجود قيم متطابقة أثناء تعيين الرتب.

ROW_NUMBER() لعدد محدد من الصفوف

تقوم الدالة التحليلية

ROW_NUMBER() بتعيين رقم تسلسلي لكل صف. يمكنك استخدام هذا لاسترداد عدد محدد من الصفوف بغض النظر عن قيمتها. على سبيل المثال:

SELECT *
FROM (
  SELECT , ROW_NUMBER() OVER (ORDER BY  DESC) AS rnk
  FROM 
)
WHERE rnk 

الحل غير التحليلي: استخدم ROWNUM

على الرغم من أنه أقل شيوعًا، يمكنك أيضًا استخدام العمود الزائف ROWNUM لقصر النتائج على عدد محدد من الصفوف. ومع ذلك، يجب استخدامه بحذر لأنه يتم تقييم ROWNUM قبل جملة ORDER BY، مما قد يؤدي إلى نتائج غير متوقعة.

مثال: احصل على الموظف الأعلى أجرًا

لتوضيح استخدام RANK() وDENSE_RANK() عند استرداد أعلى 5 موظفين أجرًا:

SELECT *
FROM (
  SELECT empno, sal, RANK() OVER (ORDER BY sal DESC) AS rnk
  FROM emp
)
WHERE rnk 

يقوم هذا الاستعلام بتعيين مرتبة رقمية لكل موظف بناءً على راتبه، حيث يمثل الرقم 1 الموظف الأعلى أجرًا. ثم يتم عرض أعلى 5 موظفين حسب الترتيب التنازلي للرواتب.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3