بتاريخ: 13 فبراير 200422 سنة comment_1232 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته،، I JUST WANNA KNOW WHAT'S WRONG WITH THIS STATMENT SELECT MIN(AVG(SAL)), JOB FROM EMP GROUP BY JOB; تقديم بلاغ
بتاريخ: 13 فبراير 200422 سنة comment_1238 السلام عليكم المشكلة الموجودة هنا اخي انك تحاول عرض نتيجة واحة وهي اصغر قيمة لمتوسط المرتبات مع اكتر من وظيفة بمعني انك اذا حذفت 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.atab هو اسم الsubqueryفي الfrom و نختار في الsub_queryما نريد من جروب و بالتوفيق ان شاء الله تقديم بلاغ
بتاريخ: 13 فبراير 200422 سنة comment_1242 شكرا للأفادة أخ Hanon_OCPفعلا انا استفاد من خبراتكو الجميع ينتظر المزيد تقديم بلاغ
بتاريخ: 14 فبراير 200422 سنة comment_1258 شكراً لك اخي hanon_ocp على الطريقة ولكن عندما نفذت الـquery الذي عملته اعطاني النتيجة الاتية .CLERK 1037.5 SALESMAN 1037.5SALESMAN 1037.5MANAGER 1037.5SALESMAN 1037.5MANAGER 1037.5MANAGER 1037.5ANALYST 1037.5PRESIDENT 1037.5SALESMAN 1037.5CLERK 1037.5 CLERK 1037.5ANALYST 1037.5CLERK 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متظرين المزيد من الاخوه تقديم بلاغ
بتاريخ: 14 فبراير 200422 سنة كاتب الموضوع comment_1319 انا أعرف الحل 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 EMPGROUP BY JOB هذا ما أريد انا اعرفه ؟ تقديم بلاغ
بتاريخ: 15 فبراير 200422 سنة comment_1347 اخي 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 سجل وهذا يسسب الخطى . تقديم بلاغ
بتاريخ: 8 مارس 200421 سنة comment_2864 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), jobfrom (select avg(sal) avg_sal , jobfrom empgroup by job)group by job/ تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.