create or replace procedure p_zhq_lstest(p_starttime in varchar2) is
|程式目的:計算使用者的流失率
| 建立日期:20101-1-11
| 初始版本 20101-1-11 ver1.0
| 說明 :只是簡單的實現,還有很多地方需要優化
/* create table t_zhq_alstj0111(starttime date,id int,endtime date,synumb int,lsnumb int,lsrate number);
create table t_zhq_alsyb0111(usermid varchar2(50));
create table t_zhq_temp(id int,sdate date,usermid varchar2(50));
--set serveroutput on ;
v_starttime date;
v_ybsdate date;
v_sdate date;
v_months number := 4 ;--樣本點數
v_interval number := 2 ;--計算絕對剩餘使用者的時間間隔
v_lsmonths number :=2 ;--流失週期
v_cmmonths number :=6 ;--計算次數
v_loop1 int;
v_loop2 int;
i int ;
-- 使用者流失統計(2個月為週期:迴圈)
--(v_starttime--2009/6/1)
begin
execute immediate 'truncate table t_zhq_alstj0111';
v_starttime := to_date(p_starttime,'yyyy-mm-dd hh24:mi:ss');
insert into t_zhq_plog values('p_zhq_lstest',null,sysdate,'start...');
commit work;
for v_loop1 in 1..v_months loop
select usermid from t_zhq_lstest0111
where sdate=add_months(v_starttime,v_loop1-1);
commit work;
v_ybsdate := add_months(v_starttime,v_loop1-1);
i :=1;
select v_ybsdate,0,v_ybsdate,count(usermid)synumb,0,0
from t_zhq_alsyb0111
commit work;
v_sdate := v_ybsdate;
for v_loop2 in 1..v_cmmonths loop
select i,add_months(v_sdate,i),usermid
from t_zhq_lstest0111
where usermid in (select usermid from t_zhq_alsyb0111)
and usermid not in
(select usermid from t_zhq_lstest0111 where sdate>=add_months(v_sdate,i)
and sdatecommit work;
select v_ybsdate,i,add_months(v_sdate,i),
b.uv - count(distinct a.usermid) synumb,
count(distinct a.usermid)lsnum,
round(count(distinct a.usermid)/b.uv,4)lsrate
from t_zhq_temp a,(select count(1)uv from t_zhq_alsyb0111)b
group by b.uv
--where sdate=add_months(v_sdate,1)
commit work;
delete from t_zhq_alsyb0111
where usermid in (select usermid from t_zhq_temp) ;
commit work;
execute immediate 'truncate table t_zhq_temp';
--v_sdate:=add_months(v_sdate,v_interval);
i:= i+v_interval;
end loop;
execute immediate 'truncate table t_zhq_alsyb0111' ;
end loop;
insert into t_zhq_plog values('p_zhq_lstest','',sysdate,'end...');
commit work;
exception
when others then
rollback work;
insert into t_zhq_plog values('p_zhq_lstest',null,sysdate,'error');
commit work;
dbms_output.put_line(sqlcode||' '||sqlerrm);
--p_writeerrorlog('p_zhq_resbase',sqlcode,sqlerrm);
--operman.send_mail('[email protected]','[email protected]','p_zhq_resbase failure!',sqlcode||' '||sqlerrm);
end p_zhq_lstest;
--execute p_zhq_lstest('2009-6-1');
使用者為何流失 流失使用者研究方法及流程
一 先把相關術語搞清楚 有些術語團隊內部之前會有定義,沒有錯誤的話,只需要理解和延用即可。有些術語團隊第一次接觸,需要先進行定義,經過團隊內部一致認同之後,方可進行後續工作。針對流失使用者調研常用的兩個術語的定義如下 使用者 使用過產品的人都可以稱之為使用者,重點是用什麼樣的維度劃分這些使用者,解決...
使用者為何流失 流失使用者研究方法及流程
一 先把相關術語搞清楚 有些術語團隊內部之前會有定義,沒有錯誤的話,只需要理解和延用即可。有些術語團隊第一次接觸,需要先進行定義,經過團隊內部一致認同之後,方可進行後續工作。針對流失使用者調研常用的兩個術語的定義如下 使用者 使用過產品的人都可以稱之為使用者,重點是用什麼樣的維度劃分這些使用者,解決...
使用者為何流失 流失使用者研究方法及流程
大量的使用者流失給我們的產品帶來極大的挑戰,使用者為什麼流失?流失之後去哪兒了?怎麼挽留現有使用者?怎麼 召回 已流失使用者?本文以 手機qq 器流失使用者研究 為例,談一下自己的理解,供大家參考。一 先把相關術語搞清楚 有些術語團隊內部之前會有ximinnsvy定義,沒有錯誤的話,只需要理解和延用...