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

مشكله مع Sum( Decode) ...


tommy_azzam

Recommended Posts

السلام عليكم ورحمة الله .. رمضان كريم



سؤال هو
شرح ..

select count (*) total
sum(decode(to_char(hire_date, 'yyyy') ,1995,1,0)) "1995"



طبعا هو ليه باقي بس النقطه اللي مش فاهمها هي decode ماهي وظيفتها في هذا المثال

وشكرا,,

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

أخي الكريم

كل عام وأنت بخير


الأمر DeCode هو أمر يستخدم في إنشاء شرط داخـل الإستعلام ، فيمكن توضيحة
في المثال التالي :


لديك جدول يدعي Emp ، وهو خاص بجدول الموظف ، يحتوي علي الحقول الثلاثة
التالية :

Enumber --> رقم الموظف
Ename --> إسم الموظف
Sex --> النـــوع

يتم التخزين داخل حقل ال Sex قيمة واحدة إما حرف ( M ) لتمثيل قيمــة
الذكر أو حرف ( F ) لتمثيل قيمة الأنثي.


المطلوب إنشاء إستعلام لعرض كافة الموظفين بحيث إجراء ضبط لحقل ال Sex
بحيث أن يعرض قيمة ذكر أو أنثي :

الإجابة :
---------

Select Enumber,Ename,DeCode(Sex,'M','ذكـر','F','انثي') As Esex
From Emp

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

أولا شرح الدالة sum
تقوم بجمع مجموعة من الأعداد الموجودة في أحد الاعمدة وذلك بتخزين القيمة الموجودة في الصف الأول ومن ثم إضافة القيمة الموجودة في الصف الثاني إلى القيمة السابقة وهكذا
ثانيا شرح الدالة decode
تقوم باختبار قيم موجودة في عمود ما
إذا كانت القيمة مساوية للقيمة التي سوف تختبرها تعيد القيمة 1
إذا كانت القيمة غير مساوية للقيمة التي سوف تختبرها تعيد القيمة 2

Decode(ColumnName , ConditionValue, ReturnValue1,ReturnValue2)


مثال
إذا اردنا ان نظهر عمود يوضح إذا كان اسم الموظف هو same
أم لا نقوم بكتابة التالي:

Decode (ename,'same','yes','no')


سوف يقرا كل سطر ويعيد ناتج الاختبار اذا كان اسم الموظف same
سيعيد yes
وإلا سيعيد no

أما بالنسبة للمثال الذي تريد شرحه فهو يحتوي على ثلاث دوال متداخلة يتم تنفيذها من الداخل إلى الخارج
To_char
Decode
Sum
في الدالة الأولى سيقوم بتحويل تاريخ التحاق الموظف على هيئة yyyy
وناتج هذه الدالة مثلا كالتالي:
1995,1994,1989,1995,1995,1990
ومن ثم يتم اختبار كل تاريخ من التواريخ الناتجة عن الدالة الاولى عن طريق الدالة الثانية بحيث
إذا كان التاريخ يساوي 1995
يعيد الرقم 1
وإلا سوف يعيد الرقم 0
وبالتالي ناتج الدالة decode من المثال السابق سوف يكون
1,0,0,1,1,0
ومن ثم يتم جمع هذه الصفوف عن طريق الدالة الثالثة decode
فيظهر الناتج التالي 3
أتمنى من الله العلي القدير أن أكون قد وضحت ما كنت تحتاج إليه راجيا من الله ان يوفقك وإيانا أجمعين

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

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

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

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

×   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.

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

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

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