beta_smat بتاريخ: 9 فبراير 2009 تقديم بلاغ مشاركة بتاريخ: 9 فبراير 2009 السلام عليكم اخواني هاتان المسألتان قمت بحلهما ولكن الشكل النهائي للحل لا يوافق مخرجات الكتاب اتمني ان تراجعوا الحل وتخبروني بمدي صحته السؤال الأول هو Create a query to display the total number of employees and, of that total, the number of employees hired in 1995, 1996, 1997, and 1998. Create appropriate column headingsالحل يظهر السنوات في صورة أعمدة و عمود به مجموعة عدد الموظفين ... وانا اظهرتهم بصورة افقة ولم استطع اظهار المجموع .... select to_char(hire_date,'yyyy')YEARs,count(*) as "Employees Hired" from employees where to_char(hire_date,'yyyy') in('1995','1996','1997','1998') group by to_char(hire_date,'yyyy') order by YEARs السؤال الثاني :Create a matrix query to display the job, the salary for that job based on department number, and the total salary for that job, for departments 20, 50, 80, and 90, giving each column an appropriate headingوحل هذه المسالة كذلك ... اريد ان تكون الادارات في صورة راسية وتحت كل ادارة اجمالي المرتبات وعلى المحور الراسي تظهر الوظائف كما في الصورة المرفقة select Job_id, DEPARTMENT_ID ,sum(salary) from employees where department_id in (20,50,80,90) group by Job_id,DEPARTMENT_ID order by 2,3 المرفقات (صورة للنتائج المطلوبة)http://www.araboug.org/ib/index.php?act=at...st&id=10812انتظر تصحيح الاخطاء والتعديلات بشغف محبكم BETA_SMART اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
a_mukhtar78 بتاريخ: 9 فبراير 2009 تقديم بلاغ مشاركة بتاريخ: 9 فبراير 2009 USE DECODE FUNCTION FOR QUESTION NO 1: SELECT COUNT (*) AS TOTAL , SUM (Y95) AS Y1995 ,SUM (Y96) AS Y1996 ,SUM (Y97) AS Y1997 ,SUM (Y98) AS Y1998 FROM ( SELECT EMP_NO , DECODE(to_char(hire_date,'yyyy'), '1995',1) Y95 , DECODE(to_char(hire_date,'yyyy'), '1996',1) Y96 , DECODE(to_char(hire_date,'yyyy'), '1997',1) Y97 , DECODE(to_char(hire_date,'yyyy'), '1998',1) Y98 FROM employees ) AS TABLE01 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Mr.Abdullah بتاريخ: 9 فبراير 2009 تقديم بلاغ مشاركة بتاريخ: 9 فبراير 2009 السؤال الثاني :Create a matrix query to display the job, the salary for that job based on department number, and the total salary for that job, for departments 20, 50, 80, and 90, giving each column an appropriate heading تفضل SELECT job_id "Job", SUM(DECODE(department_id , 20, salary)) "Dept 20", SUM(DECODE(department_id , 50, salary)) "Dept 50", SUM(DECODE(department_id , 80, salary)) "Dept 80", SUM(DECODE(department_id , 90, salary)) "Dept 90", SUM(salary) "Total" FROM employees GROUP BY job_id; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
beta_smat بتاريخ: 10 فبراير 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 10 فبراير 2009 اشكركم اخوي Mr.Abdullah و اخوي a_mukhtar78 وكنت اطمع في شرح بسيط لافهم كيف تمت هذه العملية ولكم مني خالص الشكر والتقديراخوكم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
a_mukhtar78 بتاريخ: 10 فبراير 2009 تقديم بلاغ مشاركة بتاريخ: 10 فبراير 2009 بالنسبة للسؤال الاول : 1- عملنا جدول مؤقت Sub Query يعطينا نفس الأعمدة اللتي نريد تجميعها فيما بعد بأرقام السنوات من 1995 إلى 19982- يتم وضع رقم 1 أمام حقل السنة التي تم تعيين الموظف بها عن طريق دالة DECODE3- يتم تجميع الأرقام الموجودة بكل حقل باستخدام SUM للحصول على عدد الموظفين بكل سنة4- يلاحظ عدم استخدام Group By لأننا نريد تجميع جميع السجلات و الحصول على سطر واحد فقط اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
beta_smat بتاريخ: 10 فبراير 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 10 فبراير 2009 (معدل) بالنسبة للسؤال الاول : 1- عملنا جدول مؤقت Sub Query يعطينا نفس الأعمدة اللتي نريد تجميعها فيما بعد بأرقام السنوات من 1995 إلى 19982- يتم وضع رقم 1 أمام حقل السنة التي تم تعيين الموظف بها عن طريق دالة DECODE3- يتم تجميع الأرقام الموجودة بكل حقل باستخدام SUM للحصول على عدد الموظفين بكل سنة4- يلاحظ عدم استخدام Group By لأننا نريد تجميع جميع السجلات و الحصول على سطر واحد فقط الاخ الكريم ... انا شاكر جدا لك .. شرح وافي وحل رائع ولكن هذا المثال موجود في الفصل الرابع من مادة الاوركال وهو لم يقم بعد بشرح الـ Sub Query ... فهل هذا يعني ان لها حل اخر بدون استخدام الـ Sub Query واشكرك جدا ولك تحياتي واحترامي اخوك تم تعديل 10 فبراير 2009 بواسطة beta_smat اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
a_mukhtar78 بتاريخ: 11 فبراير 2009 تقديم بلاغ مشاركة بتاريخ: 11 فبراير 2009 ممكن نستخدم طريقة الأخ Mr.Abdullah فهي لا تعتمد على Sub Queryبس انا بصراحة ما جربتهاش SELECT COUNT (*) AS TOTAL , SUM (DECODE(to_char(hire_date,'yyyy'), '1995',1)) AS Y1995 , SUM (DECODE(to_char(hire_date,'yyyy'), '1996',1)) AS Y1996 , SUM (DECODE(to_char(hire_date,'yyyy'), '1997',1)) AS Y1997 , SUM (DECODE(to_char(hire_date,'yyyy'), '1998',1)) AS Y1998 FROM employees; ] اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
beta_smat بتاريخ: 11 فبراير 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 11 فبراير 2009 (معدل) تسلم اخوي بارك الله فيك ... هي فعلا تعمل بنجاح واستطيع ان افسرها بنفس الطريقة التي قمت بشرحها لي جزاكم الله خيرا اخواني وبارك الله فيكم محبكم سامح حسن تم تعديل 11 فبراير 2009 بواسطة beta_smat اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Sireen بتاريخ: 15 أكتوبر 2010 تقديم بلاغ مشاركة بتاريخ: 15 أكتوبر 2010 (معدل) حل آخر للسؤال الأول SELECT COUNT (*) AS TOTAL , select count(*) from employees where to_char(hire_date,'yyyy')= '1995' AS Y1995 , select count(*) from employees where to_char(hire_date,'yyyy')= '1996' AS Y1996 , select count(*) from employees where to_char(hire_date,'yyyy')= '1997' AS Y1997 , select count(*) from employees where to_char(hire_date,'yyyy')= '1998' AS Y1998 FROM employees; يجوز استخدام جمله الاختيار مكان اسم العامود فقط إذا كانت ترجع قيمه واحدة كهذا المثال تم تعديل 15 أكتوبر 2010 بواسطة Sireen اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.