留存率計算
應水友要求幫忙寫的SQL
留存率:
某一個時段內,使用過該產品的使用者,在未來時間段還使用的比率。
原來搞過一個hive的
http://blog.itpub.net/29254281/viewspace-2097338/
以我們的登入表為例
space_user_task_statistics_log 表 如果loginflag = 1 說明使用者登入過產品.其中createDate 表示登入日期。
查詢計算'2017-11-06' 至'2017-11-12' 登入過的使用者,在後來6周的留存資訊。
其中nums是數字輔助表
初始化數字輔助表
call pFastCreateNums(100000);
查詢如下:
留存率:
某一個時段內,使用過該產品的使用者,在未來時間段還使用的比率。
原來搞過一個hive的
http://blog.itpub.net/29254281/viewspace-2097338/
以我們的登入表為例
space_user_task_statistics_log 表 如果loginflag = 1 說明使用者登入過產品.其中createDate 表示登入日期。
查詢計算'2017-11-06' 至'2017-11-12' 登入過的使用者,在後來6周的留存資訊。
其中nums是數字輔助表
-
create table nums(id int not null primary key);
-
-
delimiter $$
-
create procedure pCreateNums(cnt int)
-
begin
-
declare s int default 1;
-
truncate table nums;
-
while s<=cnt do
-
insert into nums select s;
-
set s=s+1;
-
end while;
-
end $$
-
delimiter ;
-
-
delimiter $$
-
create procedure pFastCreateNums(cnt int)
-
begin
-
declare s int default 1;
-
truncate table nums;
-
insert into nums select s;
-
while s*2<=cnt do
-
insert into nums select id+s from nums;
-
set s=s*2;
-
end while;
-
end $$
- delimiter ;
初始化數字輔助表
call pFastCreateNums(100000);
查詢如下:
- select d.startdate ,d.enddate,
- count(
- distinct
- case when t2.createdate between d.startdate and d.enddate then t2.userid else null end
- ) as '周活'
- from
- (
- select distinct t1.userid,t1.createdate basedate,l.createdate from (
- SELECT
- log.userid, log.createDate
- FROM
- space_user_task_statistics_log log
- WHERE
- log.loginflag = 1
- AND log.createDate between '2017-11-06' and '2017-11-12'
- ) t1
- left join
- space_user_task_statistics_log l
- on(t1.userid=l.userid and l.createDate between '2017-11-06' and ('2017-11-06' + interval 6*7-1 day))
- -- order by t1.userid,t1.createdate,l.createdate
- ) t2
- left join
- (
- select
- '2017-11-06' + interval (id-1)*7 day startdate
- ,
- '2017-11-06' + interval (id)*7-1 day enddate
- from nums where id<=6
- ) d
- on(t2.createdate between d.startdate and d.enddate)
- group by d.startdate ,d.enddate
這個SQL我覺得已經接近最優了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2149332/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL面試必考——計算留存率SQL面試
- 手機遊戲使用者留存率詳解與計算案例遊戲
- 留存率預估
- 你真懂APP留存率?統計pm教你辨別四種口徑的留存率APP
- 使用者需求與留存率關係,如何提升使用者留存率
- MySQL 留存率和復購率的場景分析MySql
- 計算CAN波特率
- 新股中籤率怎麼算?新股中籤率計算公式公式
- Spark+Hbase 億級流量分析實戰( 留存計算)Spark
- PlayHaven:資料顯示同類遊戲廣告的留存率為83% 不同類遊戲廣告留存率為80%遊戲
- 如何透過華為分析提升產品留存率?
- 增加App使用者留存率的12種思路APP
- GREE產品主管分享遊戲留存率提升經驗遊戲
- Quettra:Android版BBM月留存率超過90%Android
- Python計算商品復購率Python
- Web 動畫幀率(FPS)計算Web動畫
- 庫存週轉率計算方法
- App資料分析之App使用者留存率分析APP
- 【cbo計算公式】Join 選擇率(六)公式
- python 計算txt文字詞頻率Python
- 概率計算(抽獎活動、命中率)
- APP運營:如何找到目標使用者,提升留存率?APP
- JaCoCo計算程式碼覆蓋率原理
- 機器學習之邏輯迴歸:計算機率機器學習邏輯迴歸計算機
- 【cbo計算公式】單表選擇率(二)公式
- 單元測試的覆蓋率計算
- 從設計階段提高遊戲留存遊戲
- 留存統計 引數聚合函式函式
- [PROC FREQ] 單組率置信區間的計算
- 交強險日費率計算有變化
- 如何計算振盪電路的固有頻率
- App上手教程,提高使用者留存率的最佳實踐辦法APP
- 馬上報名 | 10大祕訣提高應用使用者留存率
- 騰訊:移動遊戲七日留存率女性玩家比男性高42%遊戲
- 【cbo計算公式】Frequenccy 直方圖選擇率(三)公式直方圖
- P-III曲線水文頻率計算程式(方法)
- 隔兩行生一行計算變化率
- SAP中五個報廢率的計算邏輯