column name
type
player_id
intdevice_id
intevent_date
date
games_played
int(player_id,event_date)是此表的主鍵,這張表顯示了某些遊戲的玩家的活動情況。每一行是乙個玩家的記錄,他在某一天使用某個裝置登出之前登入並玩了很多遊戲(可能是 0)
我們將玩家的安裝日期定義為該玩家的第乙個登入日。
我們還將某個日期 x 的第 1 天留存時間定義為安裝日期為 x 的玩家的數量,他們在 x 之後的一天重新登入,除以安裝日期為 x 的玩家的數量,四捨五入到小數點後兩位。
編寫乙個 sql 查詢,報告每個安裝日期、當天安裝遊戲的玩家數量和第一天的留存時間。
activity 表:
player_id
device_id
event_date
games_played12
2016-03-0151
22016-03-0262
32017-06-2513
12016-03-0103
42016-07-03
5result 表:
install_dt
installs
day1_retention
2016-03-01
20.50
2017-06-25
10.00
玩家 1 和 3 在 2016-03-01 安裝了遊戲,但只有玩家 1 在 2016-03-02 重新登入,所以 2016-03-01 的第一天留存時間是 1/2=0.50
玩家 2 在 2017-06-25 安裝了遊戲,但在 2017-06-26 沒有重新登入,因此 2017-06-25 的第一天留存時間為 0/1=0.00
select install_dt,
count
(distinct player_id)
as installs,
round
(sum(if
(datediff(event_date, install_dt)=1
,1,0
))/count
(distinct player_id),2
)as day1_retention
from
(select*,
min(event_date)
over
(partition
by player_id order
by event_date asc
)as install_dt
from activity
)as t
group
by install_dt
用視窗函式,但要注意group by 的用法,另外在select中,不能將前乙個查詢的字段用於後續中,比如用count(distinct player_id),而不能用installs。 mysql 留存率 用mysql統計留存率
分析中留存是個非常重要的指標,很多資料分析平台都提供留存資料的web端展現服務 那麼,如何基於乙個使用者行為表,用mysql得到留存資料呢?基於乙個日常的使用者行為表 比如登陸,測量等 用mysql直接求得使用者的留存情況 這是我一直想做的一件事,之前一直沒有好的方案,直到這次成功實踐了一次。我的分...
mysql 留存 如何用SQL做留存率分析
背景 留存率計算方法 假如今天新增了100名使用者,第二天登陸了50名,則次日留存率為50 100 50 第三天登入了30名,則第二日留存率為30 100 30 以此類推。用sql的計算思路 用sql調取出user id和使用者login time的表,獲得新增使用者登入時間表。根據user id和...
關於遊戲的留存率想到的
純屬個人閒暇娛樂觀點,非喜勿pin 剛看到了乙個手機遊戲的次日留存資訊 其實對於手機遊戲,我想每個人都有自己的想法。我想大部分人首先的想法就是遊戲好玩而且不費錢,但是就我逐漸的想法來看,好玩不費錢實在是很難的。除非是非常高手的玩家 高階的開發商,對於一款遊戲來說,我不太清楚他的常規盈利模式,但是我認...