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

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

صورة
- - - - -

اريد عمل كويري تطلع جدول فيه صاحب اعلى راتب في قسمه


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

#1 hrs

hrs

    عضو نشط

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

تاريخ المشاركة 01 March 2009 - 07:02 PM

اريد عمل كويري تطلع جدول فيه صاحب اعلى راتب في قسمه


مثال


احمد 3000 المبيعات
خالد 4400 الموجودات


......
...


وهذي محاولاتي التي لم تنجح



select ename, sal, deptno from emp where exists (select deptno ,max(sal) from emp group by deptno) ;



select e.ename,subquery1.deptno
from emp e,
(select deptno , max(sal)
from emp group by deptno) subquery1
where subquery1.deptno = e.deptno;


select e.ename,e.sal from emp e where exists ( select s.deptno,max(s.sal) from emp s where s.deptno=e.deptno group by deptno);


#2 hrs

hrs

    عضو نشط

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

تاريخ المشاركة 02 March 2009 - 10:18 AM

خلااااص عرفته

select ename,deptno, sal from emp where sal in (select max(sal) from emp group by deptno)

اللي ماكنت اعرفه انه ممكن نستخدم الAGG FN& GROUP BY بدون مانحط كولمن معين

#3 TROYMAN

TROYMAN

    مشترك

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

تاريخ المشاركة 02 March 2009 - 12:19 PM

حلك خطأ...
خود هل مثال حسب حلك:
مثلاً قسم 20 فيه أعلى راتب 2000 حلك بيجبلك كل الموظفين يلي راتبون 2000 سواء كانو بقسم 20 أو غيروا
هذا الحل الصحيح:
طريقة أولى باستخدام الثنائيات
select ename,deptno,sal from emp e where (sal,deptno) in (select max(sal),deptno
from emp group by deptno)
/

طريقة ثانية باستخدام Correlated
select ename,deptno,sal from emp e where sal in (select max(sal)
from emp where deptno=e.deptno group by deptno)
/


<<اللهم لا علـم لنا إلا ما علّمتنا إنك أنت العليــم الحكيــم>>
<<اللهم علّمنا ما ينفعنا و انفعنا بما علّمتنا و ازدنا علماً>>



Programmer (C#.Net,C++,ASP) & Oracle Developer


#4 hrs

hrs

    عضو نشط

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

تاريخ المشاركة 03 March 2009 - 11:02 AM

صدقت خيو .. ماكنت ملاحظ هذا الشي


مع اني اتذكر جربت فكرة الاول بس ماصار .. يمكن كان عندي خطأ في الكتابة

عموما
جزاك الله الف خير وكثر من أمثالك :rolleyes:

#5 the last one

the last one

    عضو

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

تاريخ المشاركة 05 March 2009 - 04:24 AM

SELECT * FROM EMP OUTER
WHERE SAL = (SELECT MAX(SAL) FROM EMP WHERE DEPTNO = OUTER.DEPTNO)
ORDER BY SAL DESC ;


AND THE RESULT WILL BE LIKE THAT
EMPNO ENAME   JOB             MGR   HIREDATE    SAL  COMM DEPTNO
-------- ---------- -------------- ------- --------- ----- ----- ------ ----------
7839 KING PRESIDENT 17-NOV-81 5000 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7698 BLAKE MANAGER 7839 01-MAY-81 2850 3
0

#6 TROYMAN

TROYMAN

    مشترك

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

تاريخ المشاركة 05 March 2009 - 12:25 PM

طريقة ثانية باستخدام Correlated

select ename,deptno,sal from emp e where sal in (select max(sal)
from emp where deptno=e.deptno group by deptno)
/


هو طبعاً ما في داعي لعملية Group by ...


<<اللهم لا علـم لنا إلا ما علّمتنا إنك أنت العليــم الحكيــم>>
<<اللهم علّمنا ما ينفعنا و انفعنا بما علّمتنا و ازدنا علماً>>



Programmer (C#.Net,C++,ASP) & Oracle Developer


#7 mohamed_shoair

mohamed_shoair

    مشترك

  • الأعضــاء
  • 53 مشاركة
  • الاسم الأول:Mohamed
  • اسم العائلة:Shoair
  • البـلـد: Country Flag
  • الاهتمامات:volley ball

تاريخ المشاركة 07 March 2009 - 06:48 PM

select rownum, deptno, empcount
from
(
select deptno, count(empno) empcount
from emp
group by deptno
order by count(empno)
)
where rownum = 1


=============================================================

كان الله في عون العبد مادام العبد في عون أخيه


Email : asdnova@yahoo.com

BBM : 2AB34745

 

 


#8 جود

جود

    مشترك

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

تاريخ المشاركة 07 March 2009 - 07:16 PM

روعة The last one ماكنت اعرف هالطريقة وجزاك الله عنا كل خير

ياأمتي إني رضعت عروبتي منذ الصغر
فتأصلت في خاطري كاللّون في جوف الحجر


Oracle Certified Professional


صورة


#9 the last one

the last one

    عضو

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

تاريخ المشاركة 08 March 2009 - 05:46 AM

Thank you so much 'God' :rolleyes:
You are so sweet so that I will give you another select statement

select empno ,deptno , ename , sal
  from (
		select empno ,deptno, ename, sal,
		dense_rank()
		over (partition by deptno
			 order by sal desc)drnk
		  from emp
		  where sal is not null
	   ) where drnk = 1
  order by deptno, sal desc
/
:D[/b][/b]


تم التعديل بواسطة the last one, 08 March 2009 - 06:01 AM.