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

وصلت لنصف الحل فساعدوني للنصف الآخر


أبوعبدالملك المصري

Recommended Posts

السلام عليكم ورحمة الله وبركاته
أخواني الكرام أنا أريد ان اعرض مجموع الموظفين التابعين لكل إدارة يعني أظهر أن الإدارة الفلانية بها عدد موظفين كذا أنا نجحت في هذا لكن المشكلة أني أريد أن أعرض مع كل إدارة أسماء الموظفين فجربت Group By ولكنها تظهر الموظفين ولا تظهر المجموع بشكل صحيح أرجو المساعدة وشكرا وهذا هو الكود أرجو منكم يإخواني أن تكملوه لي

select  
count(*) total ,
sum (decode (deptno , 10,1,0))"10",
sum (decode (deptno , 20,1,0))"20",
sum (decode (deptno , 30,1,0))"30" 
from emp;
// here I want to add the group but i do and it does not work

رابط هذا التعليق
شارك

لو انت عاوز عدد الموظفين واسمائهم لكل ادارة ده مش ممكن لأن عدد الموظفين بيطلع في خانة واحدة ولكن اسمائهم هيكونو في اكثر من خانه
فمش هينفع يكونوا في صف واحد فلو عايز تتطلع اسماء الموظفين لا تستخدم ال group function
واتمنى اني اكون فهمت السؤال لانه مش واضح اوي

رابط هذا التعليق
شارك

نعم أخي أنت فهمت السؤال لكن هناك أخ قال أنها تتم عن طريق
nested lGrouping
لكن لا أعرف كيف أعملها

رابط هذا التعليق
شارك

السلام عليكم اخي الكريم
اصل لو انت عاوز تظهر اسم الموظف و القسم ليه تستخدم الgrouping اصلا ما كده كده هيظهر اسم الموظف والقسم بتاعه لكل الموظفين
ممكن تعمل select عادية وترتب بحسب القسم
و nested grouping ممكن نستخدمها مثلا في اظهار مجموع المرتبات لكل وظيفه في القسم
كالاتي

select department_id,job_id,sum (salary)
from employees group  by department_id,job_id
order by department_id

رابط هذا التعليق
شارك

وعليكم السلام أخي أنا جربت طريقةGROUP BY CUBE
بس ظهرت أعمدة كثيرة لا أعرف كيف أتحكم فيها

تم تعديل بواسطة islamic_boy600
رابط هذا التعليق
شارك

أخى الكريم \ islamic_boy600

أنا بصراحة مش عارف أيه شكل ال out put اللى انت تقصده ، أرجو ان تقوم بعمل رسم كروكى للشكل المراد
، أنا عملت اللى انا متصوره ببرنامج ال Paint فى الصورة دى :-
post-34898-1218044712_thumb.png
لو تصورى خاطىء ، فأرجو أن تقوم بتحرير الصورة على برنامج ال Paint و ظبط الصورة
بالشكل اللى يقارب شكل ال Out Put اللى انت عاوزه ؛ و من ثم أرفاق الصورة بالمنتدى .

و شكراً

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته
أخي هاني شاكر لك إهتمامك وربنا يجعله سبب في مساعدة إخوانك
هذا هو الشكل الذي أرغب فيه

post-65652-1218057311_thumb.jpg

رابط هذا التعليق
شارك

أخى الكريم \ islamic_boy600

شكراً لأرفاقك للصورة التى طلبتها ..... و لكن للأسف ال Out Put الذى ذكرته غير منطقى و لايمكن تنفيذيه ....... فعلى حسب ما فهمت من الصورة انت تريد ان تضع مجموع ال DeptNO فى اى صف من الصفوف التى تشمل رقم هذا القسم ، فعلى أى أساس سوف يتم أختيار هذا الصف !
post-34898-1218063902_thumb.jpg

أن هذا هو الكود المنطقى لما تريده :-

SELECT   ename, deptno, COUNT (deptno)
   FROM emp GROUP BY ename, deptno
ORDER BY deptno;



فهو يظهر أسم الموظف و رقم القسم الذى يعمل به و مجموع الاقسام بال Group by

أذا كانت لك وجهة نظر مختلفه ، فأعلمنى ..... و أنا سأدرسها .

و بالتوفيق .

رابط هذا التعليق
شارك

معلش يا جماعة بس انا لما جربت الكود طلع مع كل سطر رقم1 وهو ده الطبيعي
بس مابيرجعش مجموع الاقسام لان مجموع الاقسام group by الename وال deptno هيكون واحد

تم تعديل بواسطة hanyfreedom
رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

هل تقصد هذا الكود :-

SELECT   ename, deptno,
        DECODE (deptno,
                10, (SELECT COUNT (deptno)
                       FROM emp WHERE deptno = 10),
                20, (SELECT COUNT (deptno)
                       FROM emp WHERE deptno = 20),
                30, (SELECT COUNT (deptno)
                       FROM emp WHERE deptno = 30),
                0
               ) " The Count fo DEPTNO "
   FROM emp GROUP BY ename, deptno
ORDER BY deptno;



بس ناتج مجموع الاقسام هيبقى متكرر ، مش هيبقى موجود بصف واحد من صفوف القسم - كما ذكر أخى islamic_boy600 فى صورته - هيبقى ذى ما فى هذه الصورة :-

post-34898-1218119502_thumb.png

لو ليك وجهة نظر مختلفة فى ال OUT PUT او على الكود فأرجو أعلامى ..... و شكراً

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته
بعد التحية
اخي فالله
اتمني ان تجد ضالتك في هذا الكود

select * from ( SELECT d.DEPTNO,d.DNAME,e.ename,count(e.empNO)
 FROM dept d, emp e
WHERE d.deptno = e.deptno
group by  rollup(d.DEPTNO,d.DNAME,e.ename)
order by d.DEPTNO,d.DNAME
)
where dname is not null;



298056095.jpg

وفقك الله الى ماتحب وتضي

رابط هذا التعليق
شارك

بارك الله فيك أخي أحمد زيدان ووفقك لكل خير هذا فعلا ما كنت أتمناه نفس شكل المخرجات
وأطمع في كرمك أن تشرح الكود
أعزك الله

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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