最大连续打卡天数
针对最大连续打卡天数等类似问题的SQL求解,以如下数据为例按步骤求解
步骤如下:
1)利用窗口函数对员工打卡数据进行排序
SELECT uid,to_date(eventdate)eventdate,row_number()over(partition by uid order by to_date(eventdate))rn
FROM daka
2)计算打卡日期(eventdate)与排序(rn)的差值,若差值相同则是连续打卡。对同一员工、同一差值进行分组汇总,得到每个员工每次连续打卡的天数
SELECT uid,min(eventdate),max(eventdate),count(*)continuity_days
FROM
( SELECT uid,to_date(eventdate)eventdate,row_number()ov