2010-08-16 2 views
1

У меня есть таблица базы данных, как это:почасовой заработной платы Расчет

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 

Если 'Brian' работал 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

+0

Привет, Логика мне не понятна. Цифры в тексте между вашей примерной таблицей не соответствуют номерам в самой таблице - возможно, это проще, если вы выровняете их. Разработка немного больше по вашему желаемому поведению может не повредить. – Nicolas78

+0

Я что-то недопонимаю? '40 * 15 = 600' и' 3.5151587 * 20 = 70.303174', поэтому общая сумма заработала '670.303174' ...? – GenericTypeTea

+0

Извините, чертовски оконный калькулятор снял ответ, и я принял это как должное ... – ParoX

ответ

0

Из того, что я понял из вашего поста (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 (и что платные скобки находятся рядом друг с другом, конечно).

+0

Скобки скобки не будут правы рядом друг с другом, скорее всего. Однако я мог просто отнести их в некотором смысле. Тем не менее, Thia - это то, что я хотел. Спасибо – ParoX

+0

Одна вещь, которую я хочу добавить, не забудьте установить часы в ноль в инструкции else. :) – ParoX

+0

Nevermind, я думаю, это идея, почему вы положили конец ... Я не реализовал конец :) – ParoX