我有一个事件列表。一个事件名称正在创建一个帐户,另一个正在使用Facebook创建一个帐户。我想看看使用Facebook创建的帐户所占的百分比。
下面的代码将给我一个准确的facebook账户数和总账户数,但当我试图除以这两个数字时,它只给了我数字1。
我对SQL很陌生,花了好几个小时试图弄清楚它为什么这样做毫无用处。
with
fb_act as (
select *
from raw_event
where name = 'onboard_fb_success'
and event_ts::date >= current_date - 30
),
total_act as (
select *
from raw_event
where name ='create_account'
and event_ts::date >= current_date - 30
)
select count(fb_act)/count(total_act), total_act.event_ts::date as day
from total_act, fb_act
group by day
order by day
我希望输出大约是~.3,但实际输出总是正好是1。
最佳答案
条件聚合是编写查询的更简单的方法。您似乎在使用Postgres,所以如下所示:
select re.event_ts::date as day,
(sum( (name = 'onboard_fb_success' and event_ts::date >= current_date - 30):: int) /
sum( name = 'create_account' and event_ts::date >= current_date - 30)::int)
) as ratio
from raw_event re
group by re.event_ts::date
order by day;
关于sql - 无法在SQL中划分为两个单独列表的计数,始终返回1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55801000/