最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL計(jì)算用戶留存率問題

 更新時(shí)間:2024年09月02日 11:23:49   作者:黑白交界  
電商業(yè)務(wù)中需要計(jì)算用戶留存情況,在時(shí)間維度上可以分為用戶次日、多日后的留存情況,本文就來詳細(xì)的介紹一下如何計(jì)算,具有一定的參考價(jià)值,感興趣的可以了解一下

概念

電商業(yè)務(wù)中需要計(jì)算用戶留存情況,在時(shí)間維度上可以分為用戶次日、多日后的留存情況,用留存率表示。留存率計(jì)算方式如下:

次日留存率 = 當(dāng)日新用戶在次日登錄的數(shù)量 / 當(dāng)日新用戶注冊數(shù)量

三日留存率 = 當(dāng)日新用戶在第四天登錄的數(shù)量 / 當(dāng)日新用戶注冊數(shù)量

七日留存率 = 當(dāng)日新用戶在第八天登錄的數(shù)量 / 當(dāng)日新用戶注冊數(shù)量

其他時(shí)間的留存率計(jì)算同理。

情況一

假設(shè)現(xiàn)在有兩張表,一張是注冊信息表register_info,另一張是登錄信息表login_info,兩個(gè)表格數(shù)據(jù)如下。

現(xiàn)在分別計(jì)算出每日的新增用戶數(shù),以及次日、三日、七日留存率。

首先,將兩張表做一個(gè)連接,用datediff函數(shù)選出用戶注冊后七日仍有登錄的數(shù)據(jù)(條件1),連接條件是用戶id相同(條件2)。查詢代碼如下:

select 
    r.uid,
	date(r.register_date) as rt,
	date(l.login_time) as lt,
	datediff(l.login_time, r.register_date) as tdiff
from register_info r
left join login_info l 
on r.uid=l.uid
and date(l.login_time) between date(r.register_date)+interval 1 day and date(r.register_date)+interval 7 day		
order by uid asc

查詢結(jié)果如下:(這里每個(gè)用戶的注冊時(shí)間只有一個(gè),所以會得出每個(gè)用戶所有注冊登錄時(shí)間的排列組合便于后續(xù)計(jì)算)

之后利用case條件判斷和count函數(shù)計(jì)算出各種留存率情況。代碼如下:

select 
	rt as 日期,
	count(distinct uid) as 新增用戶數(shù),
	count(distinct case when tdiff=1 then uid end)/count(distinct uid) as 次日留存率,
	count(distinct case when tdiff=3 then uid end)/count(distinct uid) as 三日留存率,
	count(distinct case when tdiff=7 then uid end)/count(distinct uid) as 七日留存率
from 
(
	select 
		r.uid,
		date(r.register_date) as rt,
		date(l.login_time) as lt,
		datediff(l.login_time, r.register_date) as tdiff
	from register_info r
	left join login_info l 
	on r.uid=l.uid
	and date(l.login_time) between date(r.register_date)+interval 1 day and date(r.register_date)+interval 7 day		
	order by uid asc
) t1
group by rt

得到結(jié)果如下:

情況二

假如現(xiàn)在只有一張用戶登錄信息表user_login_info,其中默認(rèn)每個(gè)用戶最早的登錄時(shí)間就是注冊時(shí)間,表格數(shù)據(jù)如下:

所以我們需要先用兩個(gè)子查詢得出類似(1)中的注冊表t1和登錄表t2,之后操作與(1)中相同,代碼如下:

select
	count(distinct uid) 新增用戶數(shù),
    count(distinct case when tdiff=1 then uid end)/count(distinct uid) as 次日留存率,
    count(distinct case when tdiff=3 then uid end)/count(distinct uid) as 三日留存率,
    count(distinct case when tdiff=7 then uid end)/count(distinct uid) as 七日留存率
from
(
	select t1.uid, t1.rt, t2.lt, datediff(t2.lt,t1.rt) as tdiff
	from
	(
		(select user_id as uid, min(date(login_time)) as rt from user_login_info group by user_id) t1
		LEFT JOIN
		(select user_id as uid, date(login_time) as lt from user_login_info) t2
		on t1.uid=t2.uid and t2.lt between t1.rt + interval 1 day and t1.rt + interval 7 day
	)
) t3
group by rt
order by rt asc

其中t3就是情況一中得到的t1.    

查詢結(jié)果如下:

到此這篇關(guān)于SQL計(jì)算用戶留存率問題的文章就介紹到這了,更多相關(guān)SQL 用戶留存率內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Sql Server 2012 轉(zhuǎn)換函數(shù)的比較(Cast、Convert和Parse)

    Sql Server 2012 轉(zhuǎn)換函數(shù)的比較(Cast、Convert和Parse)

    Cast、Convert 和 Parse 都是 Sql Server 2012 中的內(nèi)置轉(zhuǎn)換函數(shù),其作用是:一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。其中前兩者的差別較小,但 Parse 為 Sql Server 2012 新增函數(shù),也是最近在分析 Sql Server 2012 新特性的時(shí)間,才有想把這3個(gè)函數(shù)拿出來進(jìn)行比較分析的想法
    2012-07-07
  • SQL Server 表變量和臨時(shí)表的區(qū)別(詳細(xì)補(bǔ)充篇)

    SQL Server 表變量和臨時(shí)表的區(qū)別(詳細(xì)補(bǔ)充篇)

    這篇文章主要介紹了SQL Server 表變量和臨時(shí)表的區(qū)別(詳細(xì)補(bǔ)充篇),需要的朋友可以參考下
    2015-11-11
  • sqlserver獲取各種形式的時(shí)間

    sqlserver獲取各種形式的時(shí)間

    有時(shí)候我們需要各種各樣的格式的時(shí)間,sqlserver自帶的一些GETDATE函數(shù)就可以幫我們完成,這里分享下方便需要的朋友
    2013-01-01
  • SQL中不停機(jī)擴(kuò)容實(shí)現(xiàn)的幾種方法

    SQL中不停機(jī)擴(kuò)容實(shí)現(xiàn)的幾種方法

    不停機(jī)擴(kuò)容是一種在不影響系統(tǒng)正常運(yùn)行的情況下,動(dòng)態(tài)增加資源以提升系統(tǒng)性能和容量的方法,下面就來介紹一下幾種常見的方法,感興趣的可以了解一下
    2025-04-04
  • SQL Server像MySQL一樣擁有慢查詢?nèi)罩镜牟僮鞣椒?Slow Query Log慢日志)

    SQL Server像MySQL一樣擁有慢查詢?nèi)罩镜牟僮鞣椒?Slow Query Log

    SQL Server一直以來被人詬病的一個(gè)問題是缺少了像MySQL的慢日志功能,程序員和運(yùn)維無法知道數(shù)據(jù)庫過去歷史的慢查詢語句,本文介紹了利用SQL Server的擴(kuò)展事件捕獲慢查詢語句的功能,也就是我們常說的開源數(shù)據(jù)庫的慢日志,感興趣的朋友一起看看吧
    2024-07-07
  • 如何區(qū)分SQL數(shù)據(jù)庫中的主鍵與外鍵

    如何區(qū)分SQL數(shù)據(jù)庫中的主鍵與外鍵

    這篇文章主要介紹了如何分清SQL數(shù)據(jù)庫中的主鍵與外鍵,這里簡單介紹下,方便需要的朋友
    2013-06-06
  • SQL Server清除事務(wù)日志的兩種方式

    SQL Server清除事務(wù)日志的兩種方式

    事務(wù)日志是一種記錄每次數(shù)據(jù)庫修改操作的日志,它記錄了每一次事務(wù)修改的詳細(xì)日志,但磁盤容量始終有限制,本文主要介紹了SQL Server清除事務(wù)日志的兩種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • c#連接數(shù)據(jù)庫及sql2005遠(yuǎn)程連接的方法

    c#連接數(shù)據(jù)庫及sql2005遠(yuǎn)程連接的方法

    這篇文章主要介紹了c#連接sql數(shù)據(jù)庫及sql2005遠(yuǎn)程連接的方法,大家參考使用吧
    2014-01-01
  • 詳解SQL 通配符

    詳解SQL 通配符

    這篇文章主要介紹了SQL 通配符的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • SQL中not in與null值的具體使用

    SQL中not in與null值的具體使用

    本文主要介紹了SQL中not in與null值的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01

最新評論

信宜市| 海口市| 丘北县| 建始县| 福建省| 定陶县| 镇雄县| 恩平市| 景东| 阿克苏市| 巴林右旗| 铁岭市| 屏东市| 涿州市| 龙里县| 连城县| 银川市| 绿春县| 镶黄旗| 敦煌市| 新兴县| 隆化县| 佛山市| 腾冲县| 东阳市| 百色市| 张家界市| 宜城市| 肥东县| 浏阳市| 清新县| 永登县| 靖江市| 嫩江县| 集安市| 兰西县| 句容市| 鄂伦春自治旗| 望奎县| 株洲市| 炎陵县|