2014-04-02 73 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