题解 | #近三个月未完成试卷数为0的用户完成情况#

近三个月未完成试卷数为0的用户完成情况

https://www.nowcoder.com/practice/4a3acb02b34a4ecf9045cefbc05453fa

思路:

1. 每个人近三个有试卷作答记录的月份

2. 过滤:三个月中试卷均完成的用户 --sum(if(submit_time is null,1,0))=0, group by uid

# 思路清晰版
with t as (
    select uid, 
        date_format(start_time,"%Y%m") ym,
        dense_rank() over (partition by uid order by date_format(start_time,"%Y%m") DESC) mrank
    from exam_record
)

select 
    uid,
    count(submit_time) exam_complete_cnt
from exam_record
where (uid, date_format(start_time,"%Y%m")) in (select uid, ym from t where mrank <= 3)
group by uid
having sum(if(submit_time is null,1,0))=0
order by exam_complete_cnt DESC, uid DESC

# 缩减版
select 
    uid,
    count(submit_time) exam_complete_cnt
from(
    select uid, submit_time,
        date_format(start_time,"%Y%m") ym,
        dense_rank() over (partition by uid order by date_format(start_time,"%Y%m") DESC) mrank
    from exam_record
) a where mrank <= 3
group by uid
having sum(if(submit_time is null,1,0))=0
order by exam_complete_cnt DESC, uid DESC

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务