我有一个名为test_plan的表(id,unit,num) 我插入了一些值
INSERT INTO `test_plan` (`id`, `unit`, `num`) VALUES
('1', '1', '12'),
('2', '1', '13'),
('3', '1', '14'),
('4', '1', '10'),
('5', '2', '10'),
('6', '2', '9'),
('7', '2', '-1'),
('8', '2', '-1'),
('9', '2', '-1'),
('10', '3', '-1'),
('11', '3', '-1'),
('12', '3', '-1');
当 num 不等于-1时,我必须将每个单位的分数提取到总单位 即,在运行显示为单元1的查询100%完成后,单元2完成40%,单元3按行方式完成0%。我可以计算每个单位的数量,但不能计算完成的数量。
我为此
尝试了加入SELECT a.unit, numb / count(*) as frac FROM test_plan as a
LEFT OUTER JOIN (SELECT unit, count(num) as numb FROM test_plan where num != -1 group by unit) as b
ON a.unit = b.unit group by a.unit;
答案 0 :(得分:1)
试试这个:
select unit,
(sum(case when num = -1 then 0 else 1 end) / count(*)) * 100 as pct_complete
from lecture_plan group by unit;
不需要嵌套的子查询,聚合和case语句的组合就足够了