我有桌子
t1
这表明作业是否由用户完成
完成 - >用户成功完成了工作
给出 - >雇主将工作分配给用户,但工作尚未完成
estopped - >有一些问题,所以雇主取消了合同
id userid jobid status
1 4 6 finished
2 4 7 given
3 4 8 estopped
4 4 9 finished
2 4 10 given
3 4 11 finished
4 4 12 finished
现在我想计算成功率,
((用户4完成的总数)/ ((用户4完成的总数)+(用户4的总数)))* 100
我不知道如何在MySQL中实现这个......
答案 0 :(得分:2)
尝试以下查询:
select userid,
( ( sum(case when status='finished' then 1 else 0 end) * 100 ) /
( sum(case when status='finished' then 1 else 0 end) + sum(case when status='estopped' then 1 else 0 end) )
) success_rate
from t1
where userid = 4
group by userid;
如果您想要所有用户的记录,只需从查询中删除条件 - where userid = 4
。
答案 1 :(得分:1)
您可以使用以下解决方案:
SELECT ((c_finished / (c_finished + c_estopped)) * 100) AS success_rate
FROM (
SELECT
userid,
SUM(CASE WHEN status = 'finished' THEN 1 ELSE 0 END) AS c_finished,
SUM(CASE WHEN status = 'given' THEN 1 ELSE 0 END) AS c_given,
SUM(CASE WHEN status = 'estopped' THEN 1 ELSE 0 END) AS c_estopped
FROM t1
GROUP BY userid
)x WHERE x.userid = 4