Mysql計(jì)算n日留存率的實(shí)現(xiàn)
一、創(chuàng)建一張包含每個(gè)用戶最早登入日期的表
select user_id,min(date) as first_day from a2_userbehavior_csv group by user_id
二、創(chuàng)建一張包含每個(gè)用戶所有登入日期的表
實(shí)際上就是對(duì)用戶和日期去重
select user_id,date from a2_userbehavior_csv group by user_id,date
三、將兩個(gè)表按照user_id拼接,并且計(jì)算日期時(shí)間差
select t1.*,t2.date,datediff(t2.date,t1.first_day) as day_diff from (select user_id,min(date) as first_day from a2_userbehavior_csv group by user_id) as t1 left join (select user_id,date from a2_userbehavior_csv group by user_id,date) as t2 on t1.user_id=t2.user_id
得到結(jié)果如下:
得到了每個(gè)用戶每個(gè)登入日期距離其最早登入日期的天數(shù)。
四、計(jì)算各種留存率
現(xiàn)在思路就明朗了。
次日留存率=(day_diff=1的數(shù)量)/(day_diff=0的數(shù)量)
三日留存率=(day_diff=3的數(shù)量)/(day_diff=0的數(shù)量)
select first_day as dt, concat(round(100*count(case when day_diff=1 then user_id end)/count(case when day_diff=0 then user_id end),2),"%") as '次日留存率', concat(round(100*count(case when day_diff=3 then user_id end)/count(case when day_diff=0 then user_id end),2),"%") as '三日留存率', concat(round(100*count(case when day_diff=7 then user_id end)/count(case when day_diff=0 then user_id end),2),"%") as '七日留存率' from (select t1.*,t2.date,datediff(t2.date,t1.first_day) as day_diff from (select user_id,min(date) as first_day from a2_userbehavior_csv group by user_id) as t1 left join (select user_id,date from a2_userbehavior_csv group by user_id,date) as t2 on t1.user_id=t2.user_id) as t3 group by first_day order by first_day
到此這篇關(guān)于Mysql計(jì)算n日留存率的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Mysql n日留存率內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql實(shí)現(xiàn)全文檢索、關(guān)鍵詞跑分的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Mysql實(shí)現(xiàn)全文檢索、關(guān)鍵詞跑分的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09在MySQL?8.0版本中開啟遠(yuǎn)程登錄詳細(xì)的操作步驟
有時(shí)數(shù)據(jù)庫(kù)所在機(jī)器與項(xiàng)目運(yùn)行的機(jī)器不是同一個(gè),那么就涉及到遠(yuǎn)程鏈接數(shù)據(jù)庫(kù)了,下面這篇文章主要給大家介紹了關(guān)于在MySQL?8.0版本中開啟遠(yuǎn)程登錄詳細(xì)的操作步驟,需要的朋友可以參考下2024-04-04解決Linux安裝mysql 在/etc下沒有my.cnf的問題
這篇文章主要介紹了解決Linux安裝mysql 在/etc下沒有my.cnf的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2021-01-01MySQL?數(shù)據(jù)庫(kù)聚合查詢和聯(lián)合查詢操作
這篇文章主要介紹了MySQL?數(shù)據(jù)庫(kù)聚合查詢和聯(lián)合查詢操作,需要的朋友可以參考下2021-12-12MySQL5.73?root用戶密碼修改方法及ERROR?1193、ERROR1819與ERROR1290報(bào)錯(cuò)解決
這篇文章主要給大家介紹了關(guān)于MySQL5.73?root用戶密碼修改方法及ERROR?1193、ERROR1819與ERROR1290:...?running?with?--skip-...報(bào)錯(cuò)的解決方法,文中通過圖文將解決的步驟介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02MySQL中因一個(gè)雙引號(hào)錯(cuò)位引發(fā)的血案詳析
這篇文章主要給大家介紹了關(guān)于MySQL中因一個(gè)雙引號(hào)錯(cuò)位引發(fā)的血案的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11解決MySQL Sending data導(dǎo)致查詢很慢問題的方法與思路
這篇文章主要介紹了解決MySQL Sending data導(dǎo)致查詢很慢問題的方法與思路,感興趣的小伙伴們可以參考一下2016-04-04