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语句,这个语句的基本工作原理是这样的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,256评论 0 7
  • SQL语言基础 本章,我们将会重点探讨SQL语言基础,学习用SQL进行数据库的基本数据查询操作。另外请注意本章的S...
    厲铆兄阅读 5,360评论 2 46
  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 1,871评论 0 10
  • 每天晚上關了燈,看著窗外霓虹燈透射進來,機車聲呼嘯而過、延綿不絕,聽著聽著不知不覺睡著,然後第二天清晨在機車聲...
    听见凉山S阅读 287评论 1 1
  • 作者:C70 转自:谈资有营养(ID:tanzifeed) 杜月笙说:“头等人,有本事,没脾气;二等人,有本事,有...
    东风蛰阅读 132评论 0 0