题目
2021年上半年各类试卷的做完次数相比2020年同期的增长率(百分比格式,保留1位小数),以及做完次数排名变化; 按增长率和21年排名降序输出。
思路
1、计算2021年上半年各类试卷的做完次数 2、计算2020年上半年各类试卷的做完次数 3、进行比较计算
注意
计算排名变化,注意RANK()返回无符号类型,排名变化可能为负,直接减会出错: CAST(exam_cnt_rank_21 as SIGNED) - CAST(exam_cnt_rank_20 as SIGNED) as rank_delta
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_delta
-- exam_cnt_rank_21-exam_cnt_rank_20 as rank_delta
from
(select tag,count(submit_time) exam_cnt_20,
rank() over(order by count(submit_time) desc) exam_cnt_rank_20
from examination_info join exam_record using(exam_id)
where DATE_FORMAT(submit_time,'%Y%m') between 202001 and 202006
group by tag) tag_20
join
(select tag,count(submit_time) exam_cnt_21,
rank() over(order by count(submit_time) desc) exam_cnt_rank_21
from examination_info join exam_record using(exam_id)
where DATE_FORMAT(submit_time,'%Y%m') between 202101 and 202106
group by tag) tag_21
using(tag)
order by growth_rate desc,exam_cnt_rank_21 desc