mysql 次日留存 新登入使用者的次日成功的留存率

2021-10-20 22:31:07 字數 1706 閱讀 1097

牛客每天有很多人登入,請你統計一下牛客新登入使用者的次日成功的留存率,

有乙個登入(login)記錄表,簡況如下:

第1行表示id為2的使用者在2020-10-12使用了客戶端id為1的裝置第一次新登入了牛客網

第4行表示id為3的使用者在2020-10-12使用了客戶端id為2的裝置登入了牛客網

最後1行表示id為1的使用者在2020-10-14使用了客戶端id為2的裝置登入了牛客網

請你寫出乙個sql語句查詢新登入使用者次日成功的留存率,即第1天登陸之後,第2天再次登陸的概率,儲存小數點後面3位(3位之後的四捨五入),上面的例子查詢結果如下:

查詢結果表明:

id為1的使用者在2020-10-12第一次新登入了,在2020-10-13又登入了,算是成功的留存

id為2的使用者在2020-10-12第一次新登入了,在2020-10-13又登入了,算是成功的留存

id為3的使用者在2020-10-12第一次新登入了,在2020-10-13沒登入了,算是失敗的留存

id為4的使用者在2020-10-13第一次新登入了,在2020-10-14沒登入了,算是失敗的留存

固次日成功的留存率為 2/4=0.5

(sqlite裡查詢某一天的後一天的用法是:date(yyyy-mm-dd, '+1 day'),四捨五入的函式為round,sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才會得到0.5

mysql裡查詢某一天的後一天的用法是:date_add(yyyy-mm-dd,interval 1 day),四捨五入的函式為round)

找到表中每個id的登入最小時間,並加上1天構造新錶。

如果login中id,date資料存在於這個新錶中,就說明這個使用者是留存的

select

round(count(distinct user_id)*1.0/(select count(distinct user_id) from login),3)fromloginwhere (user_id,date) in(select user_id,date_add(min(date),interval 1 day) from login group by user_id)

定義和用法

date_add() 函式向日期新增指定的時間間隔。

語法date_add(date,interval expr type)

date 引數是合法的日期表示式。expr 引數是您希望新增的時間間隔。

type 引數可以是下列值:

microsecond

second

minute

hour

dayweek

month

quarter

year

second_microsecond

minute_microsecond

minute_second

hour_microsecond

hour_second

hour_minute

day_microsecond

day_second

day_minute

day_hour

year_month

mysql新增登入使用者 設定遠端登入使用者

mysql u使用者名稱 p密碼 在mysql所在的伺服器上登入mysqluse mysql 進入mysql資料庫grant all privileges on to test identified by 123456 with grant option 指所有ip都可用此使用者登入,這個值是ip的...

忘記Windows XP系統登入使用者的密碼

如果你安裝的是windows xp作業系統,不慎忘記了系統登入使用者 的密碼,你可以net命令來解決問題 windows xp中提供了 net user 命令,該命令可以新增 修改使用者賬戶資訊,其語法格式為 net user username password options domain net...

關於登入使用者的一些技巧

一,login name 登入使用者名稱 terminal line 使用終端裝置 login time 登入到系統的時間。二,下面對who命令的常用引數進行說明。m 它的效果同who am i顯示出自己在系統中的使用者名稱,登入終端,登入時間 q 只顯示使用者的登入帳號和登入使用者的數量 s 忽略...