1.对每个学生每一天进行排序,知道这个学生历史上过几次
2.用上课的日期减去第几次登录的,可知如果连续那么首次应该什么时间登录。那么连续的登录对应的首次登录时间应该相等。
3.限制连续登录的次数。
select---将连续登录时间和学生分组 就可知道改学生连续登录多少次
les_stu_id,
date_diff,
count(les_date) as count_num,
max(les_date) as max_les_date,
min(les_date) as min_les_date
from(
select
les_stu_id
,les_date
,date_sub(les_date, rn) as date_diff ---当前日期减去已有的天数 如果此人得到数据是相同的 则连续登录
from
(
select
distinct
date(les_start_time) as les_date,
les_stu_id,
row_number()over(partition by les_stu_id order by date(les_start_time)) as rn
from lesson
)t
)T
group by
les_stu_id,
date_diff
having count(les_date)>=3