Mysql求留存率(困難) 遊戲玩法分析

2021-10-16 09:27:06 字數 1488 閱讀 4299

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 剛看到了乙個手機遊戲的次日留存資訊 其實對於手機遊戲,我想每個人都有自己的想法。我想大部分人首先的想法就是遊戲好玩而且不費錢,但是就我逐漸的想法來看,好玩不費錢實在是很難的。除非是非常高手的玩家 高階的開發商,對於一款遊戲來說,我不太清楚他的常規盈利模式,但是我認...