知识点:
1. 百分比格式表示
CONCAT(字段名,'%') 注意要先*100
2. 数据格式转换
- CAST(字段名 AS 格式类型 )
- SQL常用的格式类型
- 二进制:BINARY
- 字符型: CHAR
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED (例如计算rank排名delta值)
- 无符号整数 : UNSIGNED
3. group by 1 是什么意思?
看到别人的代码有group by 1,就查了一下,原来是根据第一列排序,这里的1是列索引(从1开始),这样就不用写具体的列名了。
select tag,
exam_cnt_20,
exam_cnt_21,
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
from
(select tag,
exam_cnt_20,
exam_cnt_21,
ifnull(concat(round((exam_cnt_21-exam_cnt_20)/exam_cnt_20*100,1),'%'),0) as growth_rate,
rank() over(order by exam_cnt_2