Google bigquery 如何基于两个表的联接计算SQL百分比,每个分配只显示一行

Google bigquery 如何基于两个表的联接计算SQL百分比,每个分配只显示一行,google-bigquery,Google Bigquery,我如何计算成功订阅的用户的百分比?如果有uID的人(例如1)还没有,但是Sub,那么这是100%的转换 我想计算每个assignmentID组的百分比。每个assignmentID组中可以有多个用户 我的问题是: SELECT assignmentID, (SELECT count(assignment) FROM group JOIN Subscribed ON group.uID = Subscribed.uID WHERE assignment ='test' and status

我如何计算成功订阅的用户的百分比?如果有uID的人(例如1)还没有,但是Sub,那么这是100%的转换

我想计算每个assignmentID组的百分比。每个assignmentID组中可以有多个用户

我的问题是:

SELECT assignmentID, 
(SELECT count(assignment) 
FROM group JOIN Subscribed ON group.uID = Subscribed.uID 
WHERE assignment ='test' and status ='Sub') /
(SELECT count(assignment) FROM group JOIN Subscribed ON group.uID = Subscribed.uID) testconversion,

(SELECT count(assignment) 
FROM group JOIN Subscribed ON group.uID = Subscribed.uID 
WHERE assignment ='control' and status ='Sub') /
(SELECT count(assignment) FROM group JOIN Subscribed ON group.uID = Subscribed.uID) controlconversion

FROM group JOIN Subscribed ON group.uID = Subscribed.uID
GROUP BY assignmentID


订阅

uID Status  
1   Not Yet   
1   Sub     
3   Not Yet    
4   Not Yet    
5   Sub     
团体

预期产出:

AssignmentID   testconversion   controlconversion
1              100%             0%
2              50%              null


这看起来像一个
连接和聚合:

select g.assignmentid,
       (countif(g.assigned = 'test' and s.status = 'sub') /
        nullif(countif(g.assigned = 'test'), 0)
       ) as test_conversion,
       (countif(g.assigned = 'control' and s.status = 'sub') /
        nullif(countif(g.assigned = 'control'), 0)
       ) as control_conversion,
from subscribers s join
     grouped g
     using (uid)
group by g.assignmentid
select g.assignmentid,
       (countif(g.assigned = 'test' and s.status = 'sub') /
        nullif(countif(g.assigned = 'test'), 0)
       ) as test_conversion,
       (countif(g.assigned = 'control' and s.status = 'sub') /
        nullif(countif(g.assigned = 'control'), 0)
       ) as control_conversion,
from subscribers s join
     grouped g
     using (uid)
group by g.assignmentid