我有一个这样的数据库表:
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 :(得分:0)
从我收集的内容(伪代码):
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
的位置(并且支付方式彼此相邻,当然)。