2017-06-22 39 views
1

我有表MySQL的計算成功率值

t1

這告訴是否工作由用戶完成

成品 - >用戶成功完成了這項工作

給定 - >僱主將工作分配給用戶,但工作尚未完成

拒絕 - >有一些公關oblem,所以用人單位取消了該合同

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結束) +))* 100

我不如何​​在MySQL中執行這一(由用戶4翻供總數)...

+0

爲什麼有兩次作業id 7和9?這是一個錯字嗎? –

+0

@Fahad Anjum對不起兄弟我已更新我的問題 –

+0

你可以看到這個。 https://stackoverflow.com/questions/44478688/count-multiple-types-of-same-column/44478842#44478842 –

回答

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

您可以採用如下方案:

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 
+0

你查詢也適用...但需要改變DIV與/ –