我有一个表,其中有C(已完成)和N(未完成)状态的NAMES和STATUS。我想检查每个名称没有完成多少任务。我尝试了下面的代码,它返回所有'0'值:计算已完成的任务比例
从alteon组中选择名称,(从alteon选择count(状态)where status ='n')/(select count(status)from alteon)按名字;
我期待的结果为未完成/总分配其中总分配=完成+未完成。
正如前面提到的,我在每个员工姓名旁边都显示'0'。
我有一个表,其中有C(已完成)和N(未完成)状态的NAMES和STATUS。我想检查每个名称没有完成多少任务。我尝试了下面的代码,它返回所有'0'值:计算已完成的任务比例
从alteon组中选择名称,(从alteon选择count(状态)where status ='n')/(select count(status)from alteon)按名字;
我期待的结果为未完成/总分配其中总分配=完成+未完成。
正如前面提到的,我在每个员工姓名旁边都显示'0'。
下面是提供结果的查询,如上所述。
select count(status)as Total_assigned,
sum(IF(status='n', 1, 0)) as Not_completed,name
from alteon group by name ;
这里是sqlfiddle
谢谢rajesh,我期待结果未完成/总分配总分配=完整+未完成,按名称分组。您的查询按照n,c显示的计数为 – user3454315
@ user3454315:检查上面编辑的答案是否符合您的要求。 – Rajesh
我认为以下查询你想要做什么:
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.25,我希望它是25% – user3454315
@ user3454315。 。 。唉,格式化数字因数据库而异,而且您没有用数据库标记问题。 –
我收到一个错误戈登,请检查此:http://sqlfiddle.com/#!2/6f20d8/7 – user3454315
您不必使用多个SELECT语句。使用CASE来计算不完整的任务。
select name, count(case when status = 'n' then 1 else null end)/count(status)
from alteon
group by name;
优秀它的工作,但是,我想%的比例。即亚历克斯状态比例是0.25,我希望它显示状态为25%。感谢您的时间 – user3454315
然后只是乘以一百。 – Noel
优秀,得到了期望的答案:http://sqlfiddle.com/#!2/6f20d8/8 – user3454315
请给你的表格和你的需要清楚。尝试用sqlfiddle解释 –
嗨苏丹,请检查这个链接:http://sqlfiddle.com/#!2/223db/1 – user3454315
我回头看你的sqlfiddle,并在其上工作。 –