使用嵌套子查询来获取具有多个条件的值

时间:2015-03-30 06:53:55

标签: mysql mysql-workbench

我有一个名为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;

1 个答案:

答案 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语句的组合就足够了