我有一个带有NAMES和STATUS的表,其中C(已完成)和N(未完成)状态。我想检查每个名称没有完成多少个任务。我尝试了以下代码,它将返回所有' 0'值:
选择名称,(从alteon中选择count =' n')选择计数(状态)/(从alteon中选择计数(状态))来自alteon group by name;
我希望结果为未完成/总分配,其中总分配=完成+未完成。
如前所述,我得到的价值是' 0'在每个员工姓名旁边。答案 0 :(得分:0)
以下是给出结果的查询,如上所述。
select count(status)as Total_assigned,
sum(IF(status='n', 1, 0)) as Not_completed,name
from alteon group by name ;
以下是sqlfiddle
答案 1 :(得分: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;
答案 2 :(得分:0)
您不必使用多个select语句。使用CASE计算未完成的任务。
select name, count(case when status = 'n' then 1 else null end)/count(status)
from alteon
group by name;