题解 | #试卷完成数同比2020年的增长率及排名变化#

试卷完成数同比2020年的增长率及排名变化

https://www.nowcoder.com/practice/13415dff75784a57bedb6d195262be7b

思路:分别统计20,21年上半年的各类试卷的做完次数,和排名。合并后,计算增长率和排名变化

  • 统计20,21年上半年信息,建立子表
    • 联结:using
    • 各类试卷分组:group by tag,year
    • 完成次数:count()
    • 排名:dense_rank() over( order by 完成次数 desc) , 排名不需要tag分组
    • 条件:前六个月:where month()<7
  • 根据上面子表,计算增长率,和排名变化
    • 分别取20/21年的值:
      • exam_cnt as exam_cnt_20
      • lead(exam_cnt) over(partition by tag order by start_year) as exam_cnt_21
      • ranking as exam_cnt_20
      • lead(ranking) over(partition by tag order by start_year) as exam_cnt_21
    • 增长率:(2021完成数-2020完成数)/2020完成数
      • 百分比:concat()
      • 小数:round()
    • 排名变化 rank2020-rank_2021
  • 排序
    with t1 as(
      select 
          tag,
          date_format(start_time,"%Y") as start_year,
          count(score) as exam_cnt,
          rank() over(partition by date_format(start_time,"%Y") order by count(score) desc) as ranking -- 注意排名不需要分组partition by tag 
      from exam_record
      left join examination_info using(exam_id)
      where month(start_time) <7 and year(start_time) = 2020 or year(start_time) = 2021
      group by tag,start_year
    )
    select 
      tag,
      exam_cnt_20,
      exam_cnt_21,
      concat(round((exam_cnt_21-exam_cnt_20)/exam_cnt_20*100,1),"%") as growth_rate,
      exam_cnt_rank_20,
      exam_cnt_rank_21,
      exam_cnt_rank_21-exam_cnt_rank_20 as rank_delta
    from(
      select
          tag,
          sum(case when start_year = '2020' then exam_cnt end) as exam_cnt_20,
          sum(case when start_year = '2021' then exam_cnt end) as exam_cnt_21,
          sum(case when start_year = '2020' then ranking end) as exam_cnt_rank_20,
          sum(case when start_year = '2021' then ranking end) as exam_cnt_rank_21
      from t1
      group by tag
    ) t2
    where exam_cnt_21 !=0 and exam_cnt_20 !=0  
    order by growth_rate desc, exam_cnt_rank_21 desc
全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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