العودة   منتديات داماس > منتدى البرمجة العام > لغات البرمجة

إضافة رد
30-09-2018, 06:59 PM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 
السلام عليكم

ممكن مساعدة في تحويل معادلة في اكسل الى كود sql

حسب المرفق
=IF(DATE(YEAR(TODAY());MONTH(G21);DAY(G2 1))>TODAY();DATE(YEAR(TODAY())-1;MONTH(G21);DAY(G21));DATE(YEAR(TODAY() );MONTH(G21);DAY(G21)))


=ROUNDDOWN((((1+G23)^YEARFRAC(G21;G22))-1)*G20;2)




04-10-2018, 02:34 PM
Abufahmi
مدير منتدى البرمجة العام - والهندسة العكسية
رقم العضوية: 411198
تاريخ التسجيل: Jan 2013
الإقامة: Jordan
المشاركات: 3,082
تلقى دعوات الى: 2882 موضوع
إعجاب: 1,014
تلقى 2,577 إعجاب على 840 مشاركة
 
فسر هذا الكود اخي ... ما الاستعلام الذي يقوم بتنفيذه؟؟

05-10-2018, 01:38 AM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 
السلام عليكم اسف على عدم التوضيح سابقا

بخصوص الكود الاول
يقوم بتحديد تاريخ استحقائق العلاوة الدوية (السنوية )

=IF(DATE(YEAR(TODAY());MONTH(B2);DAY(B2) )>TODAY();DATE(YEAR(TODAY())-1;MONTH(B2);DAY(B2));DATE(YEAR(TODAY()); MONTH(B2);DAY(B2)))

اما الكود الثاني يقوم بحساب العلاوة السنوية
وهو عملية تراكمية

=ROUNDDOWN((((1+0.0125)^YEARFRAC(B2;B3))-1)*B1;2)

-------------

للتوضيح

B2 هي تاريخ التعيين

B3 تاريخ استحقاق اخر علاوة وهو الكود الاول الذي يقوم بتحديهها



مثال :



اذا كان تاريخ التعيين 01/06/2000 تاريخ استحقاق العلاوة السنوية 01/06/2018


الراتب الاساسي نسبة العلاوة
2570 0.0125 اجمالي العلاوة التراكمية
01/07/1995 2570 0.0125 0 اول سنة لايوجد علاوة
01/07/1996 2570 0.0125 32.125
01/07/1997 2602.125 0.0125 32.5265625
01/07/1998 2634.651563 0.0125 32.93314453
01/07/1999 2667.584707 0.0125 33.34480884
01/07/2000 2700.929516 0.0125 33.76161895
01/07/2001 2734.691135 0.0125 34.18363919
01/07/2002 2768.874774 0.0125 34.61093468
01/07/2003 2803.485709 0.0125 35.04357136
01/07/2004 2838.52928 0.0125 35.481616
01/07/2005 2874.010896 0.0125 35.9251362
01/07/2006 2909.936032 0.0125 36.3742004
01/07/2007 2946.310233 0.0125 36.82887791
01/07/2008 2983.139111 0.0125 37.28923888
01/07/2009 3020.428349 0.0125 37.75535437
01/07/2010 3058.183704 0.0125 38.2272963
01/07/2011 3096.411 0.0125 38.7051375
01/07/2012 3135.116138 0.0125 39.18895172
01/07/2013 3174.305089 0.0125 39.67881362
01/07/2014 3213.983903 0.0125 40.17479879
01/07/2015 3254.158702 0.0125 40.67698377
01/07/2016 3294.835685 0.0125 41.18544607
01/07/2017 3336.021132 0.0125 41.70026414
01/07/2018 3377.721396 0.0125 42.22151745
849.9429132

05-10-2018, 09:51 PM
Abufahmi
مدير منتدى البرمجة العام - والهندسة العكسية
رقم العضوية: 411198
تاريخ التسجيل: Jan 2013
الإقامة: Jordan
المشاركات: 3,082
تلقى دعوات الى: 2882 موضوع
إعجاب: 1,014
تلقى 2,577 إعجاب على 840 مشاركة
 
المشاركة الأصلية كتبت بواسطة sharawee 
السلام عليكم اسف على عدم التوضيح سابقا

بخصوص الكود الاول
يقوم بتحديد تاريخ استحقائق العلاوة الدوية (السنوية )

=IF(DATE(YEAR(TODAY());MONTH(B2);DAY(B2) )>TODAY();DATE(YEAR(TODAY())-1;MONTH(B2);DAY(B2));DATE(YEAR(TODAY()); MONTH(B2);DAY(B2)))

اما الكود الثاني يقوم بحساب العلاوة السنوية
وهو عملية تراكمية

=ROUNDDOWN((((1+0.0125)^YEARFRAC(B2;B3))-1)*B1;2)

-------------

للتوضيح

B2 هي تاريخ التعيين

B3 تاريخ استحقاق اخر علاوة وهو الكود الاول الذي يقوم بتحديهها



مثال :



اذا كان تاريخ التعيين 01/06/2000 تاريخ استحقاق العلاوة السنوية 01/06/2018


الراتب الاساسي نسبة العلاوة
2570 0.0125 اجمالي العلاوة التراكمية
01/07/1995 2570 0.0125 0 اول سنة لايوجد علاوة
01/07/1996 2570 0.0125 32.125
01/07/1997 2602.125 0.0125 32.5265625
01/07/1998 2634.651563 0.0125 32.93314453
01/07/1999 2667.584707 0.0125 33.34480884
01/07/2000 2700.929516 0.0125 33.76161895
01/07/2001 2734.691135 0.0125 34.18363919
01/07/2002 2768.874774 0.0125 34.61093468
01/07/2003 2803.485709 0.0125 35.04357136
01/07/2004 2838.52928 0.0125 35.481616
01/07/2005 2874.010896 0.0125 35.9251362
01/07/2006 2909.936032 0.0125 36.3742004
01/07/2007 2946.310233 0.0125 36.82887791
01/07/2008 2983.139111 0.0125 37.28923888
01/07/2009 3020.428349 0.0125 37.75535437
01/07/2010 3058.183704 0.0125 38.2272963
01/07/2011 3096.411 0.0125 38.7051375
01/07/2012 3135.116138 0.0125 39.18895172
01/07/2013 3174.305089 0.0125 39.67881362
01/07/2014 3213.983903 0.0125 40.17479879
01/07/2015 3254.158702 0.0125 40.67698377
01/07/2016 3294.835685 0.0125 41.18544607
01/07/2017 3336.021132 0.0125 41.70026414
01/07/2018 3377.721396 0.0125 42.22151745
849.9429132
قبل لا اتعب حالي سؤال ؟؟
انت بتقصد SQL Server
او
تقصد MySQL

06-10-2018, 08:28 AM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 
اخي الكريم اقصد

SQL Server

06-10-2018, 08:42 AM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 

06-10-2018, 08:48 AM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 

https://gulfupload.com/7p24m9zvw3a9

06-10-2018, 08:49 AM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 
اخي الكريم اشكرك وتم اضافة رابط للمثال


https://gulfupload.com/7p24m9zvw3a9


اقصد

SQL Server

10-10-2018, 12:56 AM
Abufahmi
مدير منتدى البرمجة العام - والهندسة العكسية
رقم العضوية: 411198
تاريخ التسجيل: Jan 2013
الإقامة: Jordan
المشاركات: 3,082
تلقى دعوات الى: 2882 موضوع
إعجاب: 1,014
تلقى 2,577 إعجاب على 840 مشاركة
 
المشاركة الأصلية كتبت بواسطة sharawee 
اخي الكريم اشكرك وتم اضافة رابط للمثال

https://gulfupload.com/7p24m9zvw3a9
اقصد
SQL Server
تفضل اخي :



create proc calSalary
as
select SUM((year(GETDATE()) - year(HiringDate)) * (MainSalary PremiumPercent)) OVER ORDER BY empid) AS PreTotal
FROM Employees
where year
(DATEADD(year, -1getdate())) >= year(HiringDate
حيث ان :
- year(GETDATE()) تمثل رقم السنة الحالية
- year(HiringDate) تمثل رقم السنة لتاريخ التعيين
- year(DATEADD(year, -1, getdate())) >= year(HiringDate) :
وهو شرط اذا كان تاريخ السنة الحالية (ناقص سنة) اكبر من تاريخ التعيين (حتي يقبل تنفيذ الاجراء)

الحصيلة :
اجمالي العلاوة = (رقم السنة الحالية - رقم السنة لتاريخ التعيين) x (الراتب الاساسي x نسبة العلاوة)

-

11-10-2018, 07:07 AM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 
اشكرك اخي الكريم وبارك الله فيك
والله يعطيك الف عافيه

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

حسب الصورة المرفقة





https://u.damasgate.com/001/5/f87u60tyvr5bhuettl5p.jpg

12-10-2018, 06:47 PM
Abufahmi
مدير منتدى البرمجة العام - والهندسة العكسية
رقم العضوية: 411198
تاريخ التسجيل: Jan 2013
الإقامة: Jordan
المشاركات: 3,082
تلقى دعوات الى: 2882 موضوع
إعجاب: 1,014
تلقى 2,577 إعجاب على 840 مشاركة
 
المشاركة الأصلية كتبت بواسطة sharawee 
اشكرك اخي الكريم وبارك الله فيك
والله يعطيك الف عافيه

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

حسب الصورة المرفقة





https://u.damasgate.com/001/5/f87u60tyvr5bhuettl5p.jpg
هل تقصد :
اجمالي الراتب = (العلاوة السنوية + الراتب الاساسي)

12-10-2018, 08:15 PM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 
في البداية اود ان اشكرك

العلاوة الدورية او السنوية : هي عملية تراكمية بمعنى
اولا : تاريخ التعيين
ثانيا : تاريخ الاستحقاق
مثال : تاريخ التعيين 1/11/2000 تاريخ الاستحقاق كل سنة بنفس التاريخ يعني تاريخ الاستحقاق قفي نفس الشهر من كل عام هو 1/11/2018 في هذه السنة اذا كان تاريخ 29/10/2018 لا تحسب تاريخ استحقاق لانه مش بنفس الشهر

مثال
اذا كان تاريخ التعيين لشخص ما هو 1/11/2011 فان تاريخ استحقاق العلاوة هو 1/11/2017
وليس 1/11/2018 لان شهر 11 لسنة 2018 لم تحين علاوة الاستحقاق فتحسب اخر علاوة هي 1/11/2017

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

الراتب الاساسي
1960
علاوة سنة 2011 = اول علاوة هي صفر
علاوة سنة 2011 = الراتب الاساسي * 0.0125 = 24.5
علاوة سنة 2011 = (الراتب الاساسي(1960) + العلاوة السنوية الاولى(24.5)) * 0.0125 =24.80
علاوة سنة 2011 = (الراتب الاساسي(1960) + العلاوة السنوية الثانية(24.80)) * 0.0125 =25.11
علاوة سنة 2011 = (الراتب الاساسي(1960) + العلاوة السنوية الثالثة(25.11)) * 0.0125 =25.43
علاوة سنة 2011 = (الراتب الاساسي(1960) + العلاوة السنوية الرابعة(25.43)) * 0.0125 =25.74
علاوة سنة 2011 = (الراتب الاساسي(1960) + العلاوة السنوية الخامسة(25.74)) * 0.0125 =26.07


العلاوة الدوية لهذا الشخص تكون مجموع علاوة كل سنة
(0+24.5+24.80+25.11+25.43+25.74+26.07) = 151.65

12-10-2018, 08:52 PM
Abufahmi
مدير منتدى البرمجة العام - والهندسة العكسية
رقم العضوية: 411198
تاريخ التسجيل: Jan 2013
الإقامة: Jordan
المشاركات: 3,082
تلقى دعوات الى: 2882 موضوع
إعجاب: 1,014
تلقى 2,577 إعجاب على 840 مشاركة
 
حيرتني اخي !!!
علاوة سنة 2011 = (1960 * 0.0125) = 24.5 ... صحيح

علاوة سنة 2011 = (الراتب الاساسي(1960) + العلاوة السنوية الاولى(24.5)) * 0.0125 =24.80 ؟؟؟
لم شكلت هذه المعادلة ؟؟؟
لم احتسبت العلاوة واعدت ضربها من جديد ؟؟؟

يعني بحسب معادلتك انت عملت :
علاوة سنة 2011 = (1960 + 24.5) * 0.0125 =24.80 ... ما هذه العلاقة !!! ارجو التفسير ؟؟؟

12-10-2018, 09:06 PM
sharawee
عضو جديد
رقم العضوية: 1043059
تاريخ التسجيل: Sep 2018
المشاركات: 21
تلقى دعوات الى: 0 موضوع
إعجاب: 6
تلقى 0 إعجاب على 0 مشاركة
 
اسف اخي الكريم


الراتب الاساسي
1960
علاوة سنة 2011 = اول علاوة هي صفر
علاوة سنة 2012 = الراتب الاساسي * 0.0125 = 24.5
علاوة سنة 2013 = (الراتب الاساسي(1960) + العلاوة السنوية الاولى(24.5)) * 0.0125 =24.80
علاوة سنة 2014 = (الراتب الاساسي(1960) + العلاوة السنوية الثانية(24.80)) * 0.0125 =25.11
علاوة سنة 2015 = (الراتب الاساسي(1960) + العلاوة السنوية الثالثة(25.11)) * 0.0125 =25.43
علاوة سنة 2016 = (الراتب الاساسي(1960) + العلاوة السنوية الرابعة(25.43)) * 0.0125 =25.74
علاوة سنة 2017 = (الراتب الاساسي(1960) + العلاوة السنوية الخامسة(25.74)) * 0.0125 =26.07

فيصبح العلاوة الدورية لهذا الشخص تساوي مجموع العلاوة
(0+24.5+24.80+25.11+25.43+25.74+26.07) = 151.65

العلاوة الدوية = 151.65

12-10-2018, 10:05 PM
Abufahmi
مدير منتدى البرمجة العام - والهندسة العكسية
رقم العضوية: 411198
تاريخ التسجيل: Jan 2013
الإقامة: Jordan
المشاركات: 3,082
تلقى دعوات الى: 2882 موضوع
إعجاب: 1,014
تلقى 2,577 إعجاب على 840 مشاركة
 
المشاركة الأصلية كتبت بواسطة sharawee 
اسف اخي الكريم


الراتب الاساسي
1960
علاوة سنة 2011 = اول علاوة هي صفر
علاوة سنة 2012 = الراتب الاساسي * 0.0125 = 24.5
علاوة سنة 2013 = (الراتب الاساسي(1960) + العلاوة السنوية الاولى(24.5)) * 0.0125 =24.80
علاوة سنة 2014 = (الراتب الاساسي(1960) + العلاوة السنوية الثانية(24.80)) * 0.0125 =25.11
علاوة سنة 2015 = (الراتب الاساسي(1960) + العلاوة السنوية الثالثة(25.11)) * 0.0125 =25.43
علاوة سنة 2016 = (الراتب الاساسي(1960) + العلاوة السنوية الرابعة(25.43)) * 0.0125 =25.74
علاوة سنة 2017 = (الراتب الاساسي(1960) + العلاوة السنوية الخامسة(25.74)) * 0.0125 =26.07

فيصبح العلاوة الدورية لهذا الشخص تساوي مجموع العلاوة
(0+24.5+24.80+25.11+25.43+25.74+26.07) = 151.65

العلاوة الدوية = 151.65

ايضا اخي لم تفهم استفهامي ؟؟؟ :
من المفترض انه معادلتك تكون بهذا الشكل :
الراتب الاساسي
1960
علاوة سنة 2011 = اول علاوة هي صفر
علاوة سنة 2012 = الراتب الاساسي * 0.0125 = 24.5
علاوة سنة 2013 = (1960 * 0.0125) = 24.5
علاوة سنة 2014 = (1960 * 0.0125) = 24.5
علاوة سنة 2015 = (1960 * 0.0125) = 24.5
علاوة سنة 2016 = (1960 * 0.0125) = 24.5
علاوة سنة 2017 = (1960 * 0.0125) = 24.5
لانه لم يحدث اي تغيير لا بنسبة العلاوة (0.0125) ولا بالراتب(1960)
فيكون الناتج واحد لها جميعا
فيصبح العلاوة الدورية لهذا الشخص تساوي مجموع العلاوة
(0 + 24.5 + 24.5 + 24.5 + 24.5 + 24.5 + 24.5) = 147

العلاوة الدوية = 147


مساعدة في تحويل معادلة في اكسل الى كود sql



Powered by vBulletin® Version
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
The owner and operator of the site is not responsible for the availability of, or any content provided.
Topics that are written in the site reflect the opinion of the author.
جميع ما يُطرح من مواضيع ومشاركات تعبر عن رأي كاتبها ولا تعبر عن رأي مالك الموقع أو الإدارة بأي حال من الأحوال.