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 的答案,因为我可以将逻辑转换为我需要的。我正在寻找伪代码,但会接受抽出的答案

编辑:请注意......工作时间永远不会是一个精确的整数,为什么我让重叠发生。

编辑2:

我想计算一个员工的总工作时间(例如:43.5151587),然后意识到前 40 个小时,他的标准工资为每小时 15 美元。所以 (40*15)...然后他加班 3.5151587 小时,每小时 20 美元。所以 (40*15) 添加到它 (3.5151587*20)...总收入是 670.303174

4

1 回答 1

0

根据我从您的帖子中收集到的信息(伪代码):

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

在哪里- (当然,工资等级length是紧挨着的)。highhourslowhours

于 2010-08-16T10:11:04.100 回答