我有一个mysql表存储了员工的表现,其中包括四个因素:
http://sqlfiddle.com/#!2/84375/1
现在我想按不同的比例对员工进行排名。
所有因素都“越高越好”。
factor2可以是负数。
它们的比例是: -
factor1:45%
factor2:25%
factor3:15%
factor4:15%
我不知道该怎么做,
但是如果不能用sql完成,
我的服务器端语言是PHP。
答案 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