题解 | #未完成率较高的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
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
11263次浏览 95人参与
# 你的实习产出是真实的还是包装的? #
2011次浏览 42人参与
# MiniMax求职进展汇总 #
24165次浏览 310人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7679次浏览 43人参与
# 简历第一个项目做什么 #
31774次浏览 342人参与
# 重来一次,我还会选择这个专业吗 #
433613次浏览 3926人参与
# 巨人网络春招 #
11385次浏览 223人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187249次浏览 1122人参与
# 牛客AI文生图 #
21454次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152495次浏览 888人参与
# 研究所笔面经互助 #
118980次浏览 577人参与
# 简历中的项目经历要怎么写? #
310431次浏览 4221人参与
# AI时代,哪些岗位最容易被淘汰 #
63937次浏览 830人参与
# 面试紧张时你会有什么表现? #
30525次浏览 188人参与
# 你今年的平均薪资是多少? #
213173次浏览 1039人参与
# 你怎么看待AI面试 #
180221次浏览 1259人参与
# 高学历就一定能找到好工作吗? #
64344次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76592次浏览 374人参与
# 我的求职精神状态 #
448199次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363579次浏览 2638人参与
# 腾讯音乐求职进展汇总 #
160697次浏览 1112人参与
# 校招笔试 #
471378次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务