繁体   English   中英

基于另一列的百分比,分组依据

[英]Percentage based on another column, with group by

这就是我所拥有的:

create table Test(day int, status varchar(50), transactions int);
insert into Test(day, status, transactions) values(5, "success", 105);
insert into Test(day, status, transactions) values(5, "success", 105);
insert into Test(day, status, transactions) values(5, "failure", 40);
insert into Test(day, status, transactions) values(6, "success", 40);
insert into Test(day, status, transactions) values(6, "failure", 32);
insert into Test(day, status, transactions) values(7, "success", 552);
insert into Test(day, status, transactions) values(7, "failure", 4);

select day, status, sum(transactions) from Test
group by day, status

得到这个:

day status  sum(transactions)
5   success 210
5   failure 40
6   success 40
6   failure 32
7   success 552
7   failure 4

我想要额外的专栏,告诉我每天我的成功率是多少。 例如第 5 天210/(210+40) ,第 6 天 40/(32+40) 等:

day status  sum(transactions)   rate
5   success 210                 0.8400
5   failure 40                  0.1600
6   success 40                  0.5556
6   failure 32                  0.4444
7   success 552                 0.9928
7   failure 4                   0.0072

通过这种方式,您可以获得等效状态类型的比率(成功/失败)。

select t.day, t.status, sum(transactions), sum(transactions)/total  as rate
from Test t inner join (select day, sum(transactions) as total from Test group by day) total
on t.day = total.day
group by t.day, t.status

Output:

day status  sum(transactions)   rate
5   failure    40               0.2759
5   success    105              0.7241

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM