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

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

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

with data_f_use as (
    select tag, year(start_time) as start_year
    from exam_record left join examination_info using (exam_id)
    where submit_time is not null
    and year(submit_time) in (2020, 2021)
    and month(submit_time) <= 6
),
    data_f_cal as (
    select tag, start_year, count(start_year) as complete_cnt
    from data_f_use
    group by tag, start_year
),
    data_2020 as (
    select tag, complete_cnt as exam_cnt_20,
        rank()over(order by complete_cnt desc) exam_cnt_rank_20
    from data_f_cal where start_year = 2020
),
    data_2021 as (
        select tag, complete_cnt as exam_cnt_21,
            rank()over(order by complete_cnt desc) exam_cnt_rank_21
        from data_f_cal where start_year = 2021 
)
  select tag, exam_cnt_20, exam_cnt_21,
    concat(round(100 * (exam_cnt_21 - exam_cnt_20) / exam_cnt_20, 1), '%') as growth_rate,
    exam_cnt_rank_20, exam_cnt_rank_21, 
    cast(exam_cnt_rank_21 as signed) - cast(exam_cnt_rank_20 as signed) as rank_delt
  from data_2020 inner join data_2021 using (tag)
  order by growth_rate desc, exam_cnt_rank_21 desc
cast 以前没用过,需要学一下,另外,需要用lead()窗口函数优化一下
全部评论

相关推荐

每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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