1.留存用戶的計算問題
涉及表格和字段如下
member 表是用戶信息表記錄用戶注冊時間、注冊設備和其他相關信息
login 表是登錄日志記錄每個用戶什么時候登錄
備注:一個用戶可以在不同的設備登錄,一個設備可以登錄多個用戶,member表是以userid(用戶編號作為主鍵),兩個表以用戶id為主鍵相連
第一步,把日志依據時間和用戶整理成 一天 一用戶 一設備 的情況,換而言之我們需要用戶每天第一條的登錄信息我們新生成這樣一張表?
SELECT DISTINCT ? A.id, A.userId, A.userIp,
CONVERT(VARCHAR(10),A.loginTime,120) AS? LOGIN
FROM
dbo.T_dance_login_log AS ?A ?/*使用別名*/
?
第二步,把兩張表做關聯
通過關鍵字段userid計算,把member 表和 第一步查詢的結果表聯合到一塊,這樣我們得到下面一張表
第三步,選取我們需要的字段,對日期做差,進行分組求和,這里需要注意的兩點? 1.用member表的device? 2.用關鍵詞distinct去重
事已至此大功告成
-----華麗麗的分割線
接下來可能有這樣的疑惑,能否把求差后的日期,變成列 我更希望得到下面這張表或者? ? 更好
這就要用到case? when語句,這個語句的基本工作原理是這樣的