赞
踩
有如下数据:
孙悟空,语文,87
孙悟空,数学,95
孙悟空,英语,68
沙悟净,语文,94
沙悟净,数学,56
沙悟净,英语,84
宋松松,语文,64
宋松松,数学,86
宋松松,英语,84
罗婷婷,语文,65
罗婷婷,数学,85
罗婷婷,英语,78
思路分析
rank():分数相同,不去掉数据(并排,假设有2、3分数相同,都排第二名,下面一个就是第四名,没有第三)
dense_rank():分数相同,则去掉(并排,下面的数据+1)
ROW_NUMBER() :不并排,假设二三分数相同,依然会排出第二名、第三名
具体看英语成绩的排名:
- -- 建表
- create table score(
- name string,
- subject string,
- score int)
- row format delimited
- fields terminated by ",";
- --插数据
- load data local inpath "/score.txt" into table score;
查询:
- select * ,
- RANK() over(partition by subject order by score desc) rank,
- DENSE_RANK() over(partition by subject order by score desc) dense_rank ,
- ROW_NUMBER() over(partition by subject order by score desc) row_num
- from score;
结果如下图所示:
到此,任务完成。我们下期再见。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。