连续登录天数及对应开始时间和结束时间

 已知一个表里有用户id和登录时间要获取连续登录天数及对应开始时间和结束时间语句,以下为Oracle语句,其他数据库可酌情修改。

WITH LOGINGROUP AS
 (SELECT USER_ID,
         ATIME,
         ATIME - ROW_NUMBER() OVER(PARTITION BY USER_ID ORDER BY ATIME) LGP
    FROM (SELECT DISTINCT USER_ID, TRUNC(ACCESS_TIME, 'dd') ATIME
            FROM SYS_ACCESS_HISTORY))
SELECT USER_ID 用户ID, LGP 登录组, MIN(ATIME) 开始时间,max(atime) 结束时间, COUNT(*) 连续登录天数
  FROM LOGINGROUP
 GROUP BY USER_ID, LGP
HAVING COUNT (*) > 1

你可能感兴趣的:(数据库,SQL,连续登录,数据分析)