使用者流失流程 儲存過程實現

2021-05-24 02:30:18 字數 2976 閱讀 8399

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定義,沒有錯誤的話,只需要理解和延用...