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

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

صورة
- - - - -

مطلوب Query


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

#1 lo2lo2a

lo2lo2a

    عضو

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

تاريخ المشاركة 17 February 2008 - 10:49 AM

السلام عليكم ورحمة الله وبركاته
على المستخدم scott/tiger
مطلوب query
تأتي ببيانات الناس اللي مرتبتها اعلى من متوسط مرتبات القسم اللي هو فيه
يعني مثلا الquery دي
select ename,job,sal,deptnofrom empwhere sal> any (select avg(sal) from emp group by deptno);
بتجيب البيانات للناس اللي مرتبتها اعلى من متوسط مرتبات الاقسام كلها
يعني حنلاقي CLARK مرتبه 2450 وجه برده مع ان متوسط مرتبات قسمه هو 2916
وطبعا الناتج يعتبر خطا لانه اقل من متوسط مرتبات قسمه
والمقارنه هنا لما حصلت حصلت على متوسط مرتبات الاقسام كلها مش قسم 10 بس
ارجو ان السؤال يكون واضح
انا حاولت فيها كتير بس ما عرفتش
فارجو المساعده








نعيب زماننا والعيب فينا وما لزماننا عيب سوانا

#2 حبيب الامس

حبيب الامس

    عضو

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

تاريخ المشاركة 18 February 2008 - 11:33 AM

select ename,job,sal,max(sal ) "Maximum Salary in Department",deptno
from emp where sal> (select avg(sal) from emp) group by deptno,job,sal,ename
order by deptno

تم التعديل بواسطة حبيب الامس, 18 February 2008 - 11:34 AM.

صورة


#3 lo2lo2a

lo2lo2a

    عضو

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

تاريخ المشاركة 22 February 2008 - 07:53 PM

جزاك الله كل خير
بس حضرتك لو نفذت الQUERY دي
SELECT AVG(SAL),DEPTNOFROM EMPGROUP BY DEPTNO;
حتلاحظ ان متوسط المرتبات في القسم 10 هي 2916
ولما تنفذ الQUERY بتاعت حضرتك حتلاحظ انه في قسم رقم 10 الموظف CLARK وهو في قسم رقم 10 راتبه 2450
وهو اقل من 2916 اللي هو متوسط مرتبات القسم 10
وده يعتبر نتيجه خاطئيه
لانه هنا قارن بالمتوسطات للاقسام كلها
والمطلوب انه لما يجي يقارن يقارن كل موظف بقسمه فقط
اتمنى ان الفكره تكون واضحه
وجزاك الله خيرا على المحاوله

نعيب زماننا والعيب فينا وما لزماننا عيب سوانا

#4 mr_khaledali

mr_khaledali

    عضو

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

تاريخ المشاركة 22 February 2008 - 08:58 PM

[codebox] select last_name,job_id,salary,department_id
from employees outer
where salary> (select avg(salary) from employees where department_id= outer.department_id);[/codebox]

شوف ال query دي وان شاء الله تشتغل
ORACLE CERTIFIED PROFESSIONAL
ORACLE APPLICATION DEVELOPER

#5 lo2lo2a

lo2lo2a

    عضو

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

تاريخ المشاركة 23 February 2008 - 08:36 AM

جزاك الله خيرا
اشتغلت كده
بس انا مش فاهمه انت عملت كده ليه
ممكن توضحلي استخدام الouter
نعيب زماننا والعيب فينا وما لزماننا عيب سوانا

#6 mr_khaledali

mr_khaledali

    عضو

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

تاريخ المشاركة 23 February 2008 - 01:10 PM

انتي ممكن تحطي outer أو اي اسم مستعار للجدول اما سبب ان انا حطيت outer عند where department_id=outer.department_id عملت join في الدالة الفرعية بعمل ربط رقم الادارة مع جدول الموظفين علشان يفهم انه متوسط المرتبات اللي في الكويري الفرعية أصغر من المرتبات في جدول الموظفين اللي في الكويري الرئيسية


اتمنى ان تكون الصورة وضحت وشكرا <_<

تم التعديل بواسطة mr_khaledali, 23 February 2008 - 01:17 PM.

ORACLE CERTIFIED PROFESSIONAL
ORACLE APPLICATION DEVELOPER