MySql查询连续登陆天数

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