當前位置:首頁 » 編程語言 » 次月留存SQL
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

次月留存SQL

發布時間: 2023-07-13 23:10:51

sql計算電商各項指標數據

本次筆記主要是記錄通過SQL計算電商各項指標數據,包括AARRR部分指標、RFM模型等常用的指標數據;

平台指標:

商品指標:

用戶行為指標:

RFM模型:見之前的文章《 SQL建立RFM模型指標的兩種方法對比 》

用戶留存率:見之前文章《 SQL 查詢用戶留存率(根據兩種不同定義計算) 》

首先我們導入相關數據,並去重數據放進新表 temp_trade;

由於時間關系,以導入如下數據,期間利用
SET date_time = STR_TO_DATE(time,'%Y-%m-%d %H');
set dates=date(date_time);
這兩個函數對原表(紅框)日期進行處理;

再檢查一下關鍵欄位有無缺失值

查詢後得出並無缺失。

查詢結果無異常值;

檢查用戶行為數據有沒有其他類型;

查詢結果無異常值;

-- 建新表,放進 去重後的 數據

create table temp_trade like o_retailers_trade_user;
insert into temp_trade select distinct * from o_retailers_trade_user;

查詢結果:

這里定義跳失率=只有瀏覽行為的用戶數/總用戶數

查詢結果

這里的購買轉化率定義為:某段時間產生購買行為的用戶數/所有到達店鋪的訪客人數

查詢結果:

同時可以通過這演算法求得:每天總行為次數、每天點擊次數、收藏次數、加購物⻋次數、購買次數

查詢結果如下:

由於轉化率的對象是商品,所以以商品id做分組,求對應的用戶行為數求和。可得出每商品的在該段時間內的瀏覽、收藏、加購、購買次數,同時可求得商品購買轉化率。

查詢結果:

此方法與上面商品轉化率大致相同,分組對象改為品類id即可。

查詢結果:

首先創建hours的新欄位,並提取時間;

查詢結果如下:

首先求出各用戶的購買次數

查詢結果:

用case when函數統計出各復購買次數的用戶數

查詢結果如下:

最後將行為串聯起來,並對其進行用戶數統計;

查詢結果如下:

(完結)

⑵ SQL裡面怎麼表示當月21號和次月20號

當月21日:

selectcast(convert(varchar(7),getdate(),120)+'-21'asdatetime)

次月20日:

selectcast(convert(varchar(7),dateadd(mm,1,getdate()),120)+'-20'asdatetime)

⑶ MySQL新增留存率

沒錯,留存的問題還沒有寫完,之前兩篇把日、周、月當期活躍用戶在後續周期的留存率問題解決了。但是還有個非常重要的指標,當期新增用戶的留存率,這個指標也是很有價值的,我們必須要關注不同日期拉新用戶的質量如何,看看不同時期新用戶的後續留存情況,對後續拉新的時間選擇也是有參考價值的。

其實實現也很簡單,只需要在之前的基礎上,先把當期的首次登陸用戶找出來就行了。實現方式是,按照用戶聚合,然後取日期最小值就能取出每個用戶首次登陸日期了,SQL語句如下↓

然後就以此為基礎,通過左連接把用戶表格再連接一次,判斷與首次登陸的日期相差多少天就行了,就能判斷是第N天有活躍,就能計算N日留存和留存率了,SQL語句和結果如下↓

後面就和之前思路一樣了,就可以求出日留存率情況了,SQL語句如下,解釋可以看前面兩篇。

然後按月實現方式和上一篇一樣的思路,關聯一個輔助表就行了,這里不詳細解釋了,可以參考上一篇,完整SQL語句和結果如下↓

那麼按周的留存率也是一樣的,SQL語句和結果如下↓

End

◆ PowerBI開場白
◆ Python高德地圖可視化
◆ Python不規則條形圖

⑷ 如下問題的sql語句怎麼寫

由於手上沒有sql環境,我這邊直接模擬一下,有錯誤的地方請指出:

1.每天每個地區播放次數最多的三首歌

selecttop3*from
(
selecta.area,b.songid,convert(varchar(30),b.date,111)as[每天],
sum(b.play_cnt)as[播放次數]
fromuseraleftjoinsongbona.userid=b.userid
groupbya.area,b.songid
)torderby[播放次數]desc

2.留存率

select*from(
selectb.*
fromuseraleftjoinsongbona.userid=b.userid
whereb.date>='2019-5-10:00:00'
andb.date<='2019-5-223:59:59'
)t
whereexists(
selectnullfromsongwheresong.songid=t.songid
and
convert(varchar(30),song.date,111)=
convert(varchar(30),dateadd(d,-1,t.date),111)
)

請試一下,如有疑問,及時溝通!

⑸ sql計算留存率演算法

select ( select count(distinct userid ) from 登錄表 where 登錄時間 = 今天 ) / ( select count(1) from 注冊表 where 注冊時間 = 昨天 ) as 戶留存率

⑹ sql資料庫日誌保存六個月在哪裡設置

1、首先打開SQLServerManagementStudio。
2、其次在對應連接上右鍵,選擇「屬性」。
3、再次在「服務屬性」上,選擇「資料庫設置」。
4、最後在右邊修改配置即可。