الانتقال إلى المحتوى
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.

WHAT'S WRONG ?

Featured Replies

بتاريخ:

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


السلام عليكم ورحمة الله وبركاته،،

I JUST WANNA KNOW WHAT'S WRONG WITH THIS STATMENT
SELECT MIN(AVG(SAL)), JOB
FROM EMP
GROUP BY JOB;

بتاريخ:

السلام عليكم
المشكلة الموجودة هنا اخي انك تحاول عرض نتيجة واحة وهي اصغر قيمة لمتوسط المرتبات مع اكتر من وظيفة
بمعني انك اذا حذفت job من السيليكت ستعمل
عموما اذا كنت تريد ان تعرض ديتيلز مع group function
فيجب استعمال subquery ف ي الfrom clause
و هذا كود مثال مع شرجه

select  job,tab.a
from emp,(select min(avg(sal)) a
from emp group by job )tab


في السيليكت نختار الjob lu column tab.a
tab هو اسم الsubqueryفي الfrom
و نختار في الsub_queryما نريد من جروب
و بالتوفيق ان شاء الله

بتاريخ:

شكرا للأفادة أخ Hanon_OCP
فعلا انا استفاد من خبراتك
و الجميع ينتظر المزيد

بتاريخ:

شكراً لك اخي hanon_ocp على الطريقة
ولكن عندما نفذت الـquery الذي عملته اعطاني النتيجة الاتية .

CLERK 1037.5
SALESMAN 1037.5
SALESMAN 1037.5
MANAGER 1037.5
SALESMAN 1037.5
MANAGER 1037.5
MANAGER 1037.5
ANALYST 1037.5
PRESIDENT 1037.5
SALESMAN 1037.5
CLERK 1037.5
CLERK 1037.5
ANALYST 1037.5
CLERK 1037.5
لذلك قمت بتعديل الـquery بنفس الفكره التي وضعتها اخي hanon والتي تعتمد على الـ subquery حتى يعطينا نتيجة واحده فقط بدلاً من ان يعطي نفس النتيجه ويكررها 14 مره لك الـ job
وهو كالاتي

select * 
from (select job , avg(sal) avg_sal from emp group by job)
where avg_sal= (select min(avg(sal)) min_sal from emp group by job)


الناتج كالاتي
CLERK 1037.5

متظرين المزيد من الاخوه

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

انا أعرف الحل

SELECT JOB , AVG(SAL)
FROM EMP
GROUP BY JOB
HAVING AVG(SAL) = ( SELECT MIN(AVG(SAL))
FROM EMP
GROUP BY JOB );
و لكن ما العيب في استخدام الجملة SELECT MIN(AVG(SAL)), JOB
FROM EMP
GROUP BY JOB هذا ما أريد انا اعرفه ؟

بتاريخ:

اخي Elmubarak
الطريقة الصيحة هي كالاتي :

select min(avg(sal)) from emp
group by job



في حالة الحاجه لاظهار الJob اعمل الاتي :

select min(avg(sal)) , min(job) from emp
group by job



بالنسبه للعيب في الـSql الخاصه بك

SELECT MIN(AVG(SAL)), JOB
FROM EMP
GROUP BY JOB; 



هو انك تحاول ان تقوم بعمل group مرتين واحده للفنكشن Avg والثانية للفنكشن min وفي المقابل انت تحاول
انت تظهر الـjob في الQuery
وتنفيذ الـselect المنطقي هو
1- يعمل تجميع او grouping لمتوسط الراتب حسب الـjob فيصبح الناتج كالاتي
ANALYST 3000
CLERK 1037.5
MANAGER 2758.33333333333
PRESIDENT 5000
SALESMAN 1400
وهنا اصبح لدينا 5 سجلات بدلاً ان كان معنا 14 سجل
2- في المرحله الثانية يحاول ان يحصل على الـmin من الخمسه السجلات بينما الـgroup مازال على عمود الـjob الموجود في الجدول الذي يحوي 14 سجل وهذا يسسب الخطى .

  • بعد 4 أسابيع...
بتاريخ:

Sorry, logically this request is not correct (not logical), but if you want to display the lowest average salary per job you should use the following code, this code will show if exist more than one job with the same lowest average salary.

[/sql]select min(avg_sal), job
from (
select avg(sal) avg_sal , job
from emp
group by job
)
group by job
/

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

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

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

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

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

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.