sql查詢精編

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語句,這個語句的基本工作原理是這樣的

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學生表Course(C#,Cname...
    哈哈海閱讀 1,250評論 0 7
  • SQL語言基礎 本章,我們將會重點探討SQL語言基礎,學習用SQL進行數據庫的基本數據查詢操作。另外請注意本章的S...
    厲鉚兄閱讀 5,347評論 2 46
  • 什么是SQL數據庫: SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,850評論 0 10
  • 每天晚上關了燈,看著窗外霓虹燈透射進來,機車聲呼嘯而過、延綿不絕,聽著聽著不知不覺睡著,然後第二天清晨在機車聲...
    聽見涼山S閱讀 286評論 1 1
  • 作者:C70 轉自:談資有營養(yǎng)(ID:tanzifeed) 杜月笙說:“頭等人,有本事,沒脾氣;二等人,有本事,有...
    東風蟄閱讀 132評論 0 0