留存率計算
應水友要求幫忙寫的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面試
- 長期留存率 — 為何以 180 日留存率替代 30 日留存率(上)
- 留存率預估
- 如何提升會員留存率?
- MySQL 留存率和復購率的場景分析MySql
- 計算CAN波特率
- Spark+Hbase 億級流量分析實戰( 留存計算)Spark
- 新股中籤率怎麼算?新股中籤率計算公式公式
- Python計算商品復購率Python
- python 計算txt文字詞頻率Python
- 增加App使用者留存率的12種思路APP
- 如何透過華為分析提升產品留存率?
- 【cbo計算公式】Join 選擇率(六)公式
- JaCoCo計算程式碼覆蓋率原理
- 【cbo計算公式】單表選擇率(二)公式
- [20180625]簡單計算日誌生成率.txt
- 單元測試的覆蓋率計算
- 留存統計 引數聚合函式函式
- 如何計算振盪電路的固有頻率
- [PROC FREQ] 單組率置信區間的計算
- 從設計階段提高遊戲留存遊戲
- App上手教程,提高使用者留存率的最佳實踐辦法APP
- 【cbo計算公式】Frequenccy 直方圖選擇率(三)公式直方圖
- P-III曲線水文頻率計算程式(方法)
- 各品類手遊資料包告:留存、ARPU、付費率指標指標
- 機器學習之邏輯迴歸:計算機率機器學習邏輯迴歸計算機
- 市銷率計算公式是什麼 股票市銷率高好還是低好公式
- 別忽略180日留存率!你的遊戲怎樣才能“熬死”對手?遊戲
- 【cbo計算公式】Height-balance直方圖選擇率(四)公式直方圖
- 關於定時器週期、頻率等相關計算定時器
- 求問高併發下容錯率有計算公式麼公式
- 網易易盾推出號碼驗證服務 助推產品提高轉化留存率
- PostgreSQL DBA(12) - 統計資訊在計算選擇率上的應用#2SQL
- PostgreSQL DBA(11) - 統計資訊在計算選擇率上的應用#1SQL
- crontab大全留存
- 《影之詩》增加玩家留存度的四類設計
- 從遊戲登入簽到介面看留存設計遊戲
- PCB 線路銅皮面積(殘銅率)計算的實現方法
- 絕密公式算單雙準確率99最強計劃方法公式