如何在Oracle中获取i每日活动参与率?

pokxtpni  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(119)

我想得到会员每天的活动参与率。总共有两张table。TB_MBR表具有MBR_NO(成员编号)、JOIN_DT(加入日期)、SSMB_DT(退出日期)和ST_CD(成员状态)列。
TB_EVT表具有EVT_DT(事件日期)和MBR_NO(参与成员编号)列。此时,我们希望按日期查询事件参与率。例如,如果您从2023年3月1日到2023年3月6日进行搜索,则应该以以下方式显示。

起初,我以为我可以简单地除以当前时间的成员总数,但后来出现了一个错误,即参与率随着成员数量的增加而逐渐下降。因此,似乎我们需要根据搜索基准日期找到当天的成员数量。
例如,如果我想检索2023年3月1日至2023年3月6日的数据,则必须将2023年3月1日参与的成员数除以截至2023年3月1日的成员总数。然后,JOIN_DT必须在2023年3月1日之前,SSMB_DT必须为NULL或在2023年3月1日之后。ST_CD列应为“正常”。我正在使用oracle查询,我已经挣扎了几天,以获得我想要输出的数据,请帮助。

wf82jlnq

wf82jlnq1#

with tb_ev_dt as (
select evt_dt, count(*) n_mmbr
from tb_evt
group by evt_d
)
,tbt as (
select evt_dt, n_mmbr,
  (select count(*) from tb_mbr m 
   where t.evt_dt >=m.join_dt and t.evt_dt<ssmb_dt) tot_mmbr
from from tb_evt_dt t
)
select evt_dt, n_mmbr, tot_mmbr, n_mmbr/decode(tot_mmbr,0,null,tot_mmbr) mmbr_rate
from tbt
order by evt_dt
;

相关问题