2014-04-02 74 views
0

我有一個表,其中有C(已完成)和N(未完成)狀態的NAMES和STATUS。我想檢查每個名稱沒有完成多少任務。我嘗試了下面的代碼,它返回所有'0'值:計算已完成的任務比例

從alteon組中選擇名稱,(從alteon選擇count(狀態)where status ='n')/(select count(status)from alteon)按名字;

我期待的結果爲未完成/總分配其中總分配=完成+未完成。

正如前面提到的,我在每個員工姓名旁邊都顯示'0'。

+1

請給你的表格和你的需要清楚。嘗試用sqlfiddle解釋 –

+0

嗨蘇丹,請檢查這個鏈接:http://sqlfiddle.com/#!2/223db/1 – user3454315

+0

我回頭看你的sqlfiddle,並在其上工作。 –

回答

0

下面是提供結果的查詢,如上所述。

select count(status)as Total_assigned, 
sum(IF(status='n', 1, 0)) as Not_completed,name 
from alteon group by name ; 

這裏是sqlfiddle

+0

謝謝rajesh,我期待結果未完成/總分配總分配=完整+未完成,按名稱分組。您的查詢按照n,c顯示的計數爲 – user3454315

+0

@ user3454315:檢查上面編輯的答案是否符合您的要求。 – Rajesh

0

我認爲以下查詢你想要做什麼:

select name, 
     sum(case when status = 'n' then 1 else 0 end) as n_status, 
     avg(case when status = 'n' then 1.0 else 0 end) as n_status_ratio 
from alteon; 
+0

優秀的戈登林諾它工作買,我想%的比例。即亞歷克斯狀態比率是0.25,我希望它是25% – user3454315

+0

@ user3454315。 。 。唉,格式化數字因數據庫而異,而且您沒有用數據庫標記問題。 –

+0

我收到一個錯誤戈登,請檢查此:http://sqlfiddle.com/#!2/6f20d8/7 – user3454315

0

您不必使用多個SELECT語句。使用CASE來計算不完整的任務。

select name, count(case when status = 'n' then 1 else null end)/count(status) 
    from alteon 
group by name; 

sqlfiddle

+0

優秀它的工作,但是,我想%的比例。即亞歷克斯狀態比例是0.25,我希望它顯示狀態爲25%。感謝您的時間 – user3454315

+0

然後只是乘以一百。 – Noel

+0

優秀,得到了期望的答案:http://sqlfiddle.com/#!2/6f20d8/8 – user3454315