设置每位员工的工作百分比

时间:2015-06-11 11:51:38

标签: php mysql

我有以下情况。我有一些员工,每个人都有工作比例。每次工作到来时,我都需要根据工作百分比将其分配给某个员工,例如:

Employee 1  Job Percentage
James       75%
Adam        15%
Cindy       10%

因此,当一份工作可用时,必须在75%的时间内分配给James,Adam 15%和Cindy 10%。它们存储在MySQL数据库中。

如果只有2名员工,这很容易解决,因为我可以从1到100(兰特1,100)得到一个随机数,看看它是否在一个员工百分比的范围内并分配相应的工作。这里的问题是员工数量可以改变,员工可以添加和删除。有谁能建议解决这个问题?欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

您需要的是累积百分比。然后你可以使用rand()。所以:

select a.*
from (select a.*,
             (@cume := @cume + percentage) as cume
      from allocations a cross join
           (select @cume := 0)
     ) a cross join
     (select rand() as r) r
where r.r between cume - percentage and cume
limit 1;

想法是获得如下范围:

 0%     75%
75%     90%
90%    100%

rand()放在子查询中的目的是只获得一行。由于查询使用between,因此可能每隔几亿次运行就会重复,因此我添加了limit 1。它使用between,以防rand()返回0或1。