题解 | #连续两次作答试卷的最大时间窗#比较臃肿,但能过

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

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

一开始使用day,但跨月的时候会出问题。 所以使用dayofyear。再锁定year在2021年。

select uid,days_window,avg_exam_cnt from (
select uid,days_window,dense_rank()over(partition by uid order by days_window desc) rk  ,round((cnt/gap)*days_window,2) avg_exam_cnt
 from (
select *,dayofyear(lag(start_time,1)over(partition by uid order by start_time desc))-dayofyear(start_time)+1 days_window,
max(dayofyear(start_time))over(partition by uid )-min(dayofyear(start_time))over(partition by uid)+1 gap,
count(uid)over(partition by uid) cnt from exam_record	
where start_time like '2021%')  a
where days_window > 1 and days_window is not null ) b
where rk =1
order by days_window desc,avg_exam_cnt desc

全部评论

相关推荐

AAA不喝拿铁:西电本硕学历没问题,但是项目名字首先得改虽然一眼能看出来是点评但是不能演都不演就直接给面试官端上去。技术点全是redis显得这像redis的课程实验,也要改。我根据真实面经整理得到的最全(高/中/低频)面试题,需要的牛u可以订阅一手我的专栏,祝好运
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务