Google bigquery 如何基于两个表的联接计算SQL百分比,每个分配只显示一行
我如何计算成功订阅的用户的百分比?如果有uID的人(例如1)还没有,但是Sub,那么这是100%的转换 我想计算每个assignmentID组的百分比。每个assignmentID组中可以有多个用户 我的问题是: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
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