如何合并如下两条语句实现两个结果相除保留2位小数的百分比。
语句1:
select count(id) as total_pass from table1 where status = 'pass' group by orderid,product
语句2:
select count(sn) as total_sn from table1 group by group by orderid,product
实现结果:
orderid | product | total_pass | total_sn | rate
201 | 产品A | 50| 50| 100.00%
203 | 产品B | 60| 120 | 50.00%
group by 的维度一样,没必要分两次查,可以直接在count里写判断条件
select orderid,product,
count(case when status='pass' then id end) total_pass,
count(sn) total_sn,
concat(round(count(case when status='pass' then id end)/count(sn)*100,2),'%') rate
from table1 group by group by orderid,product
select t1.*,t2.total_pass,t3.total_sn from table1 t1
left join (select count(id) as total_pass,orderid,product from table1 where status = 'pass' group by orderid,product) t2 on t1.orderid=t2.orderid and t1.product=t2.product
left join (select count(sn) as total_sn,orderid,product from table1 group by group by orderid,product) t2 on t1.orderid=t3.orderid and t1.product=t3.product
group by t1.orderid,t1.product
试一下吧,我也没测试过能不能跑,思路可以这样