سؤال

لدي جدول قاعدة بيانات مثل هذا:

wagetable
 name     lowhours  highhours  wage 
 Default  0         40         10   
 Default  40        9999       15   
 Brian    0         40         15   
 Brian    40        50         20   
 Brian    50        9999       22   
 Chad     0         40         13   
 Chad     40        9999       17 

إذا كان "براين" يعمل 43.5151587 ساعة ، فأريد أن يكتشف أنه صنع (40*15)+(3.5151587*20) = 670.303174.

هذه قاعدة بيانات SQLite ، لذلك أعلم أنني سأستخدم:

SELECT wage FROM wagetable WHERE name LIKE 'Brian' AND 'HourNum' BETWEEN lowhours AND highhours;

مع مزيج من الأرضية و ٪ ... أنا فقط لا أضع المنطق في رأسي.

يرجى ملاحظة الإجابات في C# و PHP مقبولة ، حيث يمكنني تحويل المنطق إلى ما أحتاجه. أنا أبحث عن رمز زائف ولكنني سأقبل الإجابات المرسومة

تحرير: يرجى ملاحظة ... لن تكون الساعات التي تعمل أبدًا عدد صحيح دقيق ، لماذا أترك التداخل يحدث.

EDIT2:

أرغب في الحصول على إجمالي ساعات الموظفين (مثال: 43.5151587) ثم أدرك أنه في أول 40 ساعة ، كان يحقق أجرًا قياسيًا @ 15 دولارًا في الساعة. لذلك (40*15) ... ثم عمل 3.5151587 ساعة من العمل الإضافي @ 20 دولارًا في الساعة. لذا (40*15) أضف إليها (3.5151587*20) ... كان المبلغ الإجمالي المكتسب 670.303174

هل كانت مفيدة؟

المحلول

من ما أجمعه من رسالتك (psuedocode):

foreach pay_bracket p:
    if hours > p.length
        pay += p.length * p.pay
        hours -= p.length
    else
        pay += hours * p.pay
        end

أين length هو highhours - lowhours (وهذه الأقواس المدفوعة تقع بجوار بعضها البعض ، بالطبع).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top