注明:sql参考和借鉴以前一个论坛的帖子,但忘记链接了
以下是修改后适应自己所需的sql:
SELECT * FROM
(SELECT * FROM(
SELECT jjdwbh,max(days) lianxu_days,min(login_day) start_date,max(login_day) end_date FROM(
SELECT jjdwbh,@cont_day := (
CASE
WHEN (
@last_uid = jjdwbh
AND DATEDIFF(bjsj, @last_dt) = 1
) THEN
(@cont_day + 1)
WHEN (
@last_uid = jjdwbh
AND DATEDIFF(bjsj, @last_dt) < 1
) THEN
(@cont_day + 0)
ELSE
1
END
) AS days,(@cont_ix := (@cont_ix + IF (@cont_day = 1, 1, 0))) AS cont_ix,@last_uid := jjdwbh,@last_dt := bjsj login_day
FROM
(SELECT jjdwbh,DATE(bjsj) bjsj FROM b_jjdb WHERE jjdwbh != 0 ORDER BY jjdwbh,bjsj) AS t,
(SELECT @last_uid := '',@last_dt := '',@cont_ix := 0,@cont_day := 0) AS t1
) AS t2
GROUP BY jjdwbh,cont_ix HAVING lianxu_days>5
)
as tmp ORDER BY lianxu_days DESC
)
ntmp GROUP BY jjdwbh;