使用多个因子和不同比例对数据进行排名

时间:2013-08-05 10:19:05

标签: php mysql rank

我有一个mysql表存储了员工的表现,其中包括四个因素:

http://sqlfiddle.com/#!2/84375/1

现在我想按不同的比例对员工进行排名。

所有因素都“越高越好”。

factor2可以是负数。

它们的比例是: -

factor1:45%

factor2:25%

factor3:15%

factor4:15%

我不知道该怎么做,

但是如果不能用sql完成,

我的服务器端语言是PHP。

2 个答案:

答案 0 :(得分:0)

这是否可以按你的要求工作?

SELECT *,(45 * Factor1 + 25 * Factor2 + 15 * Factor3 + 15 * Factor4)/ 100作为Performance FROM EmployeePerformance ORDER BY Performance DESC

编辑:阅读评论后,我相信这就是你想要的

select *,
  ( 45 * Factor1 / (select SUM(Factor1) from EmployeePerformance)
   + 30*Factor2/(select SUM(Factor2) from EmployeePerformance)
   + 15*Factor3/(select SUM(Factor3) from EmployeePerformance) 
   + 15*Factor4/(select SUM(Factor4) from EmployeePerformance)
  ) / 100 as Performance
FROM EmployeePerformance 
ORDER BY Performance DESC

答案 1 :(得分:0)

你正在寻找这个吗?

SELECT * , (45*Factor1 + 25*Factor2 + 15*Factor3 + 15*Factor4)/100 as proportion 
FROM EmployeePerformance 
ORDER BY id

demo

相关问题