الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ارجوا التصحيح

Featured Replies

بتاريخ:

السلام عليكم اخواني

هاتان المسألتان قمت بحلهما ولكن الشكل النهائي للحل لا يوافق مخرجات الكتاب

اتمني ان تراجعوا الحل وتخبروني بمدي صحته

السؤال الأول هو

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

الحل يظهر السنوات في صورة أعمدة و عمود به مجموعة عدد الموظفين ... وانا اظهرتهم بصورة افقة ولم استطع اظهار المجموع .... :wacko:

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
:unsure:

post-80141-1234150240_thumb.jpg

بتاريخ:

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

بتاريخ:
السؤال الثاني :

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;

بتاريخ:
  • كاتب الموضوع

اشكركم
اخوي Mr.Abdullah و اخوي a_mukhtar78
وكنت اطمع في شرح بسيط لافهم كيف تمت هذه العملية

ولكم مني خالص الشكر والتقدير

اخوكم :unsure:

بتاريخ:

بالنسبة للسؤال الاول :


1- عملنا جدول مؤقت Sub Query يعطينا نفس الأعمدة اللتي نريد تجميعها فيما بعد بأرقام السنوات من 1995 إلى 1998
2- يتم وضع رقم 1 أمام حقل السنة التي تم تعيين الموظف بها عن طريق دالة DECODE
3- يتم تجميع الأرقام الموجودة بكل حقل باستخدام SUM للحصول على عدد الموظفين بكل سنة
4- يلاحظ عدم استخدام Group By لأننا نريد تجميع جميع السجلات و الحصول على سطر واحد فقط

بتاريخ:
  • كاتب الموضوع

بالنسبة للسؤال الاول :


1- عملنا جدول مؤقت Sub Query يعطينا نفس الأعمدة اللتي نريد تجميعها فيما بعد بأرقام السنوات من 1995 إلى 1998
2- يتم وضع رقم 1 أمام حقل السنة التي تم تعيين الموظف بها عن طريق دالة DECODE
3- يتم تجميع الأرقام الموجودة بكل حقل باستخدام SUM للحصول على عدد الموظفين بكل سنة
4- يلاحظ عدم استخدام Group By لأننا نريد تجميع جميع السجلات و الحصول على سطر واحد فقط




الاخ الكريم ... انا شاكر جدا لك .. شرح وافي وحل رائع
ولكن هذا المثال موجود في الفصل الرابع من مادة الاوركال وهو لم يقم بعد بشرح الـ Sub Query ... فهل هذا يعني ان لها حل اخر بدون استخدام الـ Sub Query

واشكرك جدا ولك تحياتي واحترامي

اخوك :unsure:

تم تعديل بواسطة beta_smat

بتاريخ:

ممكن نستخدم طريقة الأخ 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

  • بعد 1 سنة...
بتاريخ:

حل آخر للسؤال الأول

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;



يجوز استخدام جمله الاختيار مكان اسم العامود فقط إذا كانت ترجع قيمه واحدة كهذا المثال

تم تعديل بواسطة Sireen

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.