题解 | #试卷完成数同比2020年的增长率及排名变化#
试卷完成数同比2020年的增长率及排名变化
https://www.nowcoder.com/practice/13415dff75784a57bedb6d195262be7b
with t3 as
(select
t2.tag,
year(t1.start_time) as start_year,
count(t1.submit_time) as exam_cnt,
rank() over(partition by year(t1.start_time) order by count(t1.submit_time) desc) as exam_cnt_rank
from
exam_record t1
left join
examination_info t2
on
t1.exam_id = t2.exam_id
where
year(t1.start_time) in (2020,2021)
and t1.submit_time is not null
and month(t1.start_time) <= 6
group by
t2.tag,start_year
order by
start_year,exam_cnt desc),
t4 as (select tag from t3 group by t3.tag having count(t3.tag) > 1),
t5 as (select tag,exam_cnt as exam_cnt_20 from t3 where start_year = 2020 and tag in (select tag from t4)),
t6 as (select tag,exam_cnt as exam_cnt_21 from t3 where start_year = 2021 and tag in (select tag from t4)),
t7 as (select t5.tag,concat(round(100*(exam_cnt_21-exam_cnt_20)/exam_cnt_20,1),'%') as growth_rate from t5,t6 where t5.tag = t6.tag),
t8 as (select tag,exam_cnt_rank as exam_cnt_rank_20
from t3 where start_year = 2020 and tag in (select tag from t4)),
t9 as (select tag,exam_cnt_rank as exam_cnt_rank_21
from t3 where start_year = 2021 and tag in (select tag from t4)),
t10 as (select t8.tag,cast(exam_cnt_rank_21 as signed) - cast(exam_cnt_rank_20 as signed) as rank_delta from t8,t9 where t8.tag = t9.tag)
select
t5.tag,
t5.exam_cnt_20,
t6.exam_cnt_21,
t7.growth_rate,
t8.exam_cnt_rank_20,
t9.exam_cnt_rank_21,
t10.rank_delta
from
t5 left join t6 on t5.tag = t6.tag left join t7 on t5.tag = t7.tag left join t8 on t5.tag = t8.tag left join t9 on t5.tag = t9.tag left join t10 on t5.tag = t10.tag
order by
t7.t7.growth_rate desc,t9.exam_cnt_rank_21 desc
查看14道真题和解析