SELECT userid,login_date2 未打卡开始时间,login_date1 未打卡结束时间,D 未打卡天数 FROM (
SELECT T1.userid,T1.login_date login_date1,T2.login_date login_date2,DATEDIFF(T1.login_date,T2.login_date) D FROM (
SELECT T.*,@R1:=@R1+1 R FROM (
SELECT T.* FROM (
SELECT '10001' userid ,'2020-07-01' login_date FROM DUAL UNION ALL
SELECT '10001','2020-07-02' FROM DUAL UNION ALL
SELECT '10001','2020-07-03' FROM DUAL UNION ALL
SELECT '10002','2020-07-01' FROM DUAL UNION ALL
SELECT '10003','2020-07-05' FROM DUAL UNION ALL
SELECT '10001','2020-08-02' FROM DUAL UNION ALL
SELECT '10001','2020-08-03' FROM DUAL UNION ALL
SELECT '10002','2020-08-01' FROM DUAL ) T ORDER BY userid,login_date) T ,(SELECT @R1:=0) R) T1
LEFT JOIN (
SELECT T.*,@R2:=@R2+1 R FROM (
SELECT T.* FROM (
SELECT '10001' userid ,'2020-07-01' login_date FROM DUAL UNION ALL
SELECT '10001','2020-07-02' FROM DUAL UNION ALL
SELECT '10001','2020-07-03' FROM DUAL UNION ALL
SELECT '10002','2020-07-01' FROM DUAL UNION ALL
SELECT '10003','2020-07-05' FROM DUAL UNION ALL
SELECT '10001','2020-08-02' FROM DUAL UNION ALL
SELECT '10001','2020-08-03' FROM DUAL UNION ALL
SELECT '10002','2020-08-01' FROM DUAL ) T ORDER BY userid,login_date) T ,(SELECT @R2:=0) R) T2
ON T2.USERID=T1.USERID AND T2.R=T1.R-1 ) T WHERE D>=10
把以下内容,直接替换成你的表名,就可以了。
SELECT '10001' userid ,'2020-07-01' login_date FROM DUAL UNION ALL
SELECT '10001','2020-07-02' FROM DUAL UNION ALL
SELECT '10001','2020-07-03' FROM DUAL UNION ALL
SELECT '10002','2020-07-01' FROM DUAL UNION ALL
SELECT '10003','2020-07-05' FROM DUAL UNION ALL
SELECT '10001','2020-08-02' FROM DUAL UNION ALL
SELECT '10001','2020-08-03' FROM DUAL UNION ALL
SELECT '10002','2020-08-01' FROM DUAL
SELECT userid,login_date2 未打卡开始时间,login_date1 未打卡结束时间,D 未打卡天数 FROM (
SELECT T1.userid,T1.login_date login_date1,T2.login_date login_date2,DATEDIFF(T1.login_date,T2.login_date) D FROM (
SELECT T.*,@R1:=@R1+1 R FROM (
SELECT T.* FROM TABLE_NAME T ORDER BY userid,login_date) T ,(SELECT @R1:=0) R) T1
LEFT JOIN (
SELECT T.*,@R2:=@R2+1 R FROM (
SELECT T.* FROM TABLE_NAME T ORDER BY userid,login_date) T ,(SELECT @R2:=0) R) T2
ON T2.USERID=T1.USERID AND T2.R=T1.R-1 ) T WHERE D>=10