最艰难的一题 | #连续两次作答试卷的最大时间窗#

连续两次作答试卷的最大时间窗

https://www.nowcoder.com/practice/9dcc0eebb8394e79ada1d4d4e979d73c

with t as
(select uid, exam_id, date_format(start_time, '%Y-%m-%d') day,
dense_rank() over (partition by uid order by date_format(start_time, '%Y-%m-%d')) r
from exam_record
where year(start_time) = 2021)

select a.uid, max(datediff(day2, day1) + 1) days_window, round(count(distinct exam_id, start_time) / (datediff(max(day2), min(day1)) + 1) * max(datediff(day2, day1) + 1), 2) avg_exam_cnt
from
(select t1.uid uid, t1.day day1, t2.day day2
from t t1
join t t2
on t1.uid = t2.uid and t1.r + 1 = t2.r) a
left join exam_record e
on a.uid = e.uid
where year(start_time) = 2021
group by a.uid order by days_window desc, avg_exam_cnt desc;

思路有点乱,尝试了十几次才成功。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务