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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

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


4 رد (ردود) على هذا الموضوع

#1 tommy_azzam

tommy_azzam

    مشترك

  • الأعضــاء
  • 61 مشاركة

تاريخ المشاركة 25 September 2006 - 03:56 PM

السلام عليكم ...

كنت عايز من اخواني شرح الاستعلام الاتي

select count (*) tota,l
sum(decode(to_shar(hire_date, 'yyyy') ,1995,1,0)) "1995"


ولكم جزير الشكر
" ان الله لا يضيع اجر من احسن عملا "

tom_azzam@hotmail.com
tom_azzam@yahoo.com

#2 tommy_azzam

tommy_azzam

    مشترك

  • الأعضــاء
  • 61 مشاركة

تاريخ المشاركة 26 September 2006 - 04:42 PM

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



سؤال هو
شرح ..
select count (*) total
sum(decode(to_char(hire_date, 'yyyy') ,1995,1,0)) "1995"


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

وشكرا,,
" ان الله لا يضيع اجر من احسن عملا "

tom_azzam@hotmail.com
tom_azzam@yahoo.com

#3 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 26 September 2006 - 06:06 PM

أخي الكريم

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


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


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

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

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


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

الإجابة :
---------
Select Enumber,Ename,DeCode(Sex,'M','ذكـر','F','انثي') As Esex
From Emp

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#4 tommy_azzam

tommy_azzam

    مشترك

  • الأعضــاء
  • 61 مشاركة

تاريخ المشاركة 26 September 2006 - 07:52 PM

جزاك الله خيرا

وجعله ان شاء الله في ميزان حسناتك
" ان الله لا يضيع اجر من احسن عملا "

tom_azzam@hotmail.com
tom_azzam@yahoo.com

#5 na3es

na3es

    مشترك

  • الأعضــاء
  • 67 مشاركة

تاريخ المشاركة 04 October 2006 - 07:03 AM

أولا شرح الدالة 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
أتمنى من الله العلي القدير أن أكون قد وضحت ما كنت تحتاج إليه راجيا من الله ان يوفقك وإيانا أجمعين