<题目>
给定一张用户签到表user_attendence,表中包含三个字段,分别是用户ID:【user_id】,日期:【date】,是否签到:【is_sign_in】,0否1是。
<问题1> 计算截至当前,每个用户已经连续签到的天数:
要求输出用户ID【user_id】和连续签到天数【recent_continuous_days】
select user_id,datediff('2021-06-01',max_date) as recent_continuous_days
from (
select user_id,max(new_date) max_date
from
(
select user_id,min(date) as new_date from user_attendence where is_sigin_in=1 grou pby uid_id -- 全勤,取最小的签到日期用于计算连续签到人数
union all
select user_id,date new_date from user_attendence where is_sigin_in=0
) t group by user_id -- 有未签到的,取最大未签到日期用于计算连续签到人数
) s
) r