题解 | #未完成率较高的50%用户近三个月答卷情况#

未完成率较高的50%用户近三个月答卷情况

https://www.nowcoder.com/practice/3e598a2dcd854db8b1a3c48e5904fe1c

从这道题目本身看,难点不是很多,个人感觉最关键的就是如何理解未完成率较高的50%用户,这也卡了我蛮久。
通过观察发现,这个未完成率前50%的用户的计算就是先得到各个用户总的完成率然后进行排序,根据排名进行筛选,在这里我遇到了一个问题,如何对这前50%的用户进行筛选,一开始我用的是dense_rank()over()进行排序,然后想着算出总用户数num,取前一半也即round(num/2)个用户的数据,但这样行不通。
随后,参考了优秀解答发现排序函数中还有percent_rank()over()的用法,我也是第一次见这种用法,这样就直接得到了各个用户的完成情况在总体中的百分位,然后直接筛选即可。
select
  uid,
  start_month,
  count(start_time) total_cnt,
  count(submit_time) complete_time
from
  (
    select
      uid,
      date_format(start_time, '%Y%m') start_month,
      dense_rank() over(
        partition by uid
        order by
          date_format(start_time, '%Y%m') desc
      ) rk,
      start_time,
      submit_time
    from
      exam_record
    where
      uid in (select uid from  // 使用子查询查找未完成率较高的50%用户且等级为6、7级
          		(select uid,level,
              	percent_rank()over(order by incomplete_rate desc) rk
            from
              (
                select
                  er.uid uid,
                  level,
                  sum(isnull(submit_time)) / count(start_time) incomplete_rate
                from
                  exam_record as er
                  left join user_info as ui on er.uid = ui.uid
                  left join examination_info as ei on er.exam_id = ei.exam_id
                where
                  ei.tag = 'SQL'
                group by
                  er.uid
              ) a
          ) b
        where
          rk <= 0.5
          and level >= 6
      )
  ) c
where
  rk <= 3
group by
  uid,
  start_month
order by
  uid,
  start_month
全部评论

相关推荐

完了,感觉大疆开始泡池子了简历筛选这个状态已经卡了四五天了
_追梦旅人_:同学考虑深圳睿联不,我们正在秋招,可在我主页看岗位,感兴趣可直接投递~
投递大疆等公司10个岗位
点赞 评论 收藏
分享
扉川川:查看图片
投递用友等公司10个岗位
点赞 评论 收藏
分享
有了offer来还愿:很难想象这是一个本科生的简历。
点赞 评论 收藏
分享
秋招到现在0offer,给各位985✌️丢脸了,不想再实习了,女朋友前几天还跟我忽然替分手了,搞得职场情场双失意😭虽然现在每天的工作就是坐着,闲得蛋疼,但打算润了准备考公了😡
迷茫的大四🐶:别慌,分析一波: 1.985学历,不脱腿,些许加分 2.有实习,说明具有一定实力和经验 3.女友离去,未来道路没有顾虑,放心前行 4.依旧年轻,拥有大好年华 加油,佬,不要被一时阴霾遮蔽双眼
实习心态崩了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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