⑴ 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、最後在右邊修改配置即可。