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

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

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

select uid
        ,count(start_time) AS exam_complete_cnt /*作答次数*/
from(
    select uid
            ,start_time
            ,submit_time
            ,dense_rank() over(partition by uid order by date_format(start_time,'%Y%m') desc) AS ranking
    from exam_record
)t1
where ranking <=3
group by uid
having count(uid) = count(submit_time)
order by exam_complete_cnt desc
        ,uid desc

1、窗口函数用dense_rank():因为相同月份的排名相同,并且不跳过排名

2、注意窗口函数中order by要将start_time转化为%Y%m的格式,否则每个start_time的排名将会是唯一的。

全部评论

相关推荐

05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在提需求:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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