user_id loginTime
156061 2017-07-07 08:59:40
156069 2017-07-06 14:39:17
156061 2017-07-06 11:16:31
156061 2017-07-05 08:58:20
143432 2017-07-03 22:09:26
110681 2017-07-02 21:00:32
69 2017-06-30 14:03:48
156061 2017-06-30 09:00:05
156061 2017-06-29 10:05:27
156061 2017-06-28 09:20:54
查询156061,156069这两个用户当前连续登陆天数为3
156061 3
156069 1
感觉加个字段更直观和简单,例如加一个记录连续登录天数的count,否则的话,仅仅通过登录时间loginTime很麻烦,表设计就有问题
借助rownumber即可求解;
如果是连续的记录,那么 diff(Date- rn) 肯定是相同的!
核心的代码:logindate - row_number() over (partition by userid order by logindate) as groupday
参考:SQL数据分析
select user_id, MAX(loginTime)-MIN(loginTime) form table group by user_id