إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

هل توجد دالة اسمها Rank في الsql


13 رد (ردود) على هذا الموضوع

#1 Rolo

Rolo

    عضو

  • الأعضــاء
  • 18 مشاركة

تاريخ المشاركة 21 June 2007 - 04:42 AM

كيف احصل علي ثاني اكبر راتب في جدول الموظفين تاني اعلي راتب فقط في ريكورد لوحدو :(

#2 Masrico

Masrico

    مشترك

  • الأعضــاء
  • 63 مشاركة

تاريخ المشاركة 21 June 2007 - 04:28 PM

جرب هذا الكود

select salary , rownum
from (select salary from employees order by salary desc) 
where rownum = 2;

SCJP 1.4 - SCWCD 1.4 - OCP Developer 9i


#3 miash80

miash80

    عضو مميز

  • الأعضــاء
  • 794 مشاركة
  • الاسم الأول:mousa
  • اسم العائلة:hamdallah
  • البـلـد: Country Flag
  • الاهتمامات:Read
  • المنصب الحالي:Analyst Assistant

تاريخ المشاركة 23 June 2007 - 12:23 PM

بسم الله الرحمن الرحيم
ممكن أخي العزيز أن تستخدم هذا الكود
select max(sal)
from emp
where sal <(max(sal) from emp

اخوك موسى
miash80
:( :( :D

اللهم أغفر للمسلمين والمسلمات والمؤمينين والمؤمينات ألاحياء منهم وألاموات الى يوم الدين


موضوع قرأتة فأعجبني
http://www.shbab1.com/2minutes.htm

اذا عجبك موضوع من مواضيعي..لا تقل لي شكراً
و لكن أدعو لي (في ظهر الغيب) بالآتي

اللهم اغفر له ما تقدم من ذنبه و ما تأخر..اللهم احسن خاتمته
اللهم اغفر لوالديه و ارحمهما و ادخلهما جناتك برحمتك يا أرحم الراحمين و لكم بالمثل ان شاء الله
ارجو من الله ان يكون ما انقله لكم من ضمن حسناتى
 356663087.jpg

 

لا تأســــفنَّ عـلى غــــــدرِ الزمــانِ لطالــمـا

رقصـــــــت على جثــــثِ الأســــــــودِ كلابا

لا تحسبن برقصـــــها تعلوا على أســــيادها
تبقى الأســــودُ أسوداً والكـــــلابُ كِــــــلابا


#4 Masrico

Masrico

    مشترك

  • الأعضــاء
  • 63 مشاركة

تاريخ المشاركة 23 June 2007 - 02:04 PM

بسم الله الرحمن الرحيم

select max(sal)
from emp
where sal <(max(sal) from emp


أعتقد ان هذا الكود سوف يولد خطأ فالدالة max لا يجوز ان تستخدم مع where لأن الـ group function لا يجوز مناداتها مع where .... وان كنا نريد إستخدامها لفلترة البيانات فمكانها مع Having وليس مع where

SCJP 1.4 - SCWCD 1.4 - OCP Developer 9i


#5 zakarotta

zakarotta

    عضو

  • الأعضــاء
  • 13 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 31 July 2007 - 02:04 AM

بالفعل الأكواد السابقة خطأ
الكود الصحيح هو

SELECT max(sal) 
  FROM emp 
  WHERE sal <> 
			 (select max(sal) from emp);
بالتوفيق للجميع

#6 okm461

okm461

    عضو

  • الأعضــاء
  • 40 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 31 July 2007 - 09:47 AM

كيف احصل علي ثاني اكبر راتب في جدول الموظفين تاني اعلي راتب فقط في ريكورد لوحدو :angry:

نعم هناك بالفعل دالة اسمها rank
select emp,sale,rank()over(orderby sale)rank from emp_sale

#7 الكونت

الكونت

    عضو

  • الأعضــاء
  • 49 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 May 2008 - 12:17 PM

السلام عليكم

هذا هو الكود

select max(sal) from emp where sal <(select max(sal) from emp); t
والفكره ببساطه انو اجيب اكبر راتب وبعدين اجيب اكبر راتب بحيث يكون اصغر من الراتب الي جبته بالاول


Avec mes meilleurs vœux de succès


#8 khaledmega

khaledmega

    عضو مميز

  • الأعضــاء
  • 838 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 08 May 2008 - 07:59 PM

السلام عليكم
الحل هو الصحيح هو
select sal , rownum
from (select sal from emp order by sal desc)
where rownum <=2 ;

وشكرا
ميجا

من أهـم مواضــيعي :



نفسك تسطب اوراكل 10g وبالصور وتربط بين الداتابيز والديفولبر ؟


للأستفسار عن أى شيء يخص الأوراكل أبس أو اوراكل ديفولبر راسلنى على

e
ng-mega@hotmail.com

 

Oracle Apps Techno-Functional Consultant


Oracle Developer & Instructor

 

Instructor At Next Academy

 

محاضر معتمد لدي نكست أكاديمي

OCA - OCP

م / خالد الشاذلي


#9 عمرو النادي

عمرو النادي

    مشرف الـ Oracle Financials

  • فريق الإشراف
  • 288 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 11 May 2008 - 09:01 PM

select max (sal)
from emp
where sal <> (select max ( sal) from emp);

الــرابحـــــون يـفـعـــلــــون مـالا يـفـعـلــــه الخـاســــــــرون
ســكـوتـى لايـعــنـى (جــهـلـى) بــما يـــدور حــولـى ,, ولـــكـن مـاحــولـى لايـــستحـق (الكـلام)
لـو ركـزت علـي الـي ضـاع منـك عمـرك مـاهـاتشـوف الـي بيـسـتـنــاك يــلا مستنـي ايـه شـوف رزقــك الدنيــا واسعـه

 


 

 

 

 





Team Leader Oracle application


#10 khairo2003

khairo2003

    عضو

  • الأعضــاء
  • 2 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 November 2008 - 02:35 PM

السلام عليكم ورحمة الله وبركاته
أخى الكريم أريد كود للحصول على إسم وراتب
أكبر عشر رواتب للموظفين

أرجو التكرم بكتابة الكود
ولك جزيل الشكر

#11 msayed.evara

msayed.evara

    مشترك

  • الأعضــاء
  • 119 مشاركة
  • الاسم الأول:Mohamed
  • اسم العائلة:Sayed
  • البـلـد: Country Flag
  • المنصب الحالي:Systems Analyst

تاريخ المشاركة 30 November 2008 - 03:02 PM

السلام عليكم

ANK calculates the rank of a value in a group of values. Rows with equal values for the ranking criteria receive the same rank. Oracle then adds the number of tied rows to the tied rank to calculate the next rank. Therefore, the ranks may not be consecutive numbers.
As an aggregate function, RANK calculates the rank of a hypothetical row identified by the arguments of the function with respect to a given sort specification. The arguments of the function must all evaluate to constant expressions within each aggregate group, because they identify a single row within each group. The constant argument expressions and the expressions in the ORDER BY clause of the aggregate match by position. Therefore, the number of arguments must be the same and their types must be compatible.

As an analytic function, RANK computes the rank of each row returned from a query with respect to the other rows returned by the query, based on the values of the value_exprs in the order_by_clause.


Syntax
Aggregate Syntax: rank_aggregate


v&Auml;&Auml;,&Auml;&Auml;&Auml;&iquest;
>&Auml;&Auml;RANK&Auml;&Auml;(&Auml;&Auml;expr&Auml;&Aacute;&Auml;)&Auml;&Auml;WITHIN GROUP&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;>
v&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;,&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&iquest;
>&Auml;&Auml;(ORDER BY&Auml;&Auml;expr&Auml;&Acirc;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Acirc;&Auml;&Acirc;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Acirc;&Aacute;&Auml;)&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;><
&Agrave;&Acirc;&Auml;DESC&Acirc;&Auml;&Ugrave; &Agrave;&Auml;NULLS&Auml;&Acirc;&Auml;FIRST&Auml;&Acirc;&Auml;&Ugrave;
&Agrave;&Auml;ASC&Auml;&Ugrave; &Agrave;&Auml;LAST&Auml;&Auml;&Ugrave;
Analytic Syntax: rank_analytic


>&Auml;&Auml;RANK&Auml;&Auml;()&Auml;OVER&Auml;&Auml;(&Auml;&Acirc;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Auml;&Acirc;&Auml;order_by_clause)&Auml;&Auml;><
&Agrave;&Auml;query_partition_clause&Auml;&Ugrave;
Aggregate Example
The following example calculates the rank of a hypothetical employee in the sample table hr.employees with a salary of $15,500 and a commission of 5%:

SELECT RANK(15500, .05) WITHIN GROUP
(ORDER BY salary, commission_pct) "Rank"
FROM employees; Rank
----------
105
Similarly, the following query returns the rank for a $15,500 salary among the employee salaries:

SELECT RANK(15500) WITHIN GROUP
(ORDER BY salary DESC) "Rank of 15500"
FROM employees; Rank of 15500
--------------
4

Analytic Example
The following statement ranks the employees in the sample hr schema within each department based on their salary and commission. Identical salary values receive the same rank and cause nonconsecutive ranks. Compare this example with the example for DENSE_RANK.

SELECT department_id, last_name, salary, commission_pct,
RANK() OVER (PARTITION BY department_id
ORDER BY salary DESC, commission_pct) "Rank"
FROM employees; DEPARTMENT_ID LAST_NAME SALARY COMMISSION_PCT Rank
------------- --------------- ---------- -------------- ----------
10 Whalen 4400 1
20 Hartstein 13000 1
20 Goyal 6000 2
30 Raphaely 11000 1
30 Khoo 3100 2
30 Baida 2900 3
30 Tobias 2800 4

MOHAMMED SAYED
Analyst

#12 omar-alreyati

omar-alreyati

    عضو مميز

  • الأعضــاء
  • 596 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 November 2008 - 06:35 PM

بالنسبة للكود
SELECT max(sal)
FROM emp
WHERE sal <>
(select max(sal) from emp);

فانه يظهر اعلى ثاني راتب . ماذا لو اردت اعلى ثالث راتب او الرابع أو ......................الخ (غير ثانبت)


اما بالنسبة للكود
select sal , rownum
from (select sal from emp order by sal desc)
where rownum <=2 ;
فانه يظهر الراتب الاول والثاني وانا ارديد الثاني فقط او الثالث او الرابع .............................الخ

يا ريت لو يشاركني بهذه الأسئلة

بالله عليكم لا تنسوني من دعاءكم الصالح
لا تنسوا أهل غزة والعراق والمجاهدين من دعاءكم

#13 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 03 December 2008 - 03:09 PM

-- جلب ثاني أكبر راتب.
SELECT MAX(SAL) AS MAX_SAL
FROM EMP
WHERE SAL < (SELECT MAX(SAL) - 1 FROM EMP)

-- جلب أول أكبر 10 رواتب--
SELECT EMPNO,SAL
FROM (SELECT EMPNO,SAL FROM EMP ORDER BY SAL DESC) T
WHERE ROWNUM <= 10

-- جلب آخر أصغر 10 رواتب--
SELECT EMPNO,SAL
FROM (SELECT EMPNO,SAL FROM EMP ORDER BY SAL) T
WHERE ROWNUM <= 10



مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#14 asd202

asd202

    عضو نشط

  • الأعضــاء
  • 405 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 03 December 2008 - 06:09 PM

تابع الرابط الاتى

لو تريد فقط ثالث اكبر قيمة

http://www.araboug.o...t=0#entry144314
begin

for i in REVERSE 1..100000

loop

message('اللهم ارحمنا');

end loop;

end;