当前位置:   article > 正文

Hive高级 (Rank函数)详解_hive的rank

hive的rank

需求:查询每科成绩的排名

有如下数据:

孙悟空,语文,87
孙悟空,数学,95
孙悟空,英语,68
沙悟净,语文,94
沙悟净,数学,56
沙悟净,英语,84
宋松松,语文,64
宋松松,数学,86
宋松松,英语,84
罗婷婷,语文,65
罗婷婷,数学,85
罗婷婷,英语,78

思路分析

rank():分数相同,不去掉数据(并排,假设有2、3分数相同,都排第二名,下面一个就是第四名,没有第三)

dense_rank():分数相同,则去掉(并排,下面的数据+1)

ROW_NUMBER() :不并排,假设二三分数相同,依然会排出第二名、第三名

具体看英语成绩的排名:

  1. -- 建表
  2. create table score(
  3. name string,
  4. subject string,
  5. score int)
  6. row format delimited
  7. fields terminated by ",";

  1. --插数据
  2. load data local inpath "/score.txt" into table score;

查询:

  1. select * ,
  2. RANK() over(partition by subject order by score desc) rank,
  3. DENSE_RANK() over(partition by subject order by score desc) dense_rank ,
  4. ROW_NUMBER() over(partition by subject order by score desc) row_num
  5. from score;

结果如下图所示:

到此,任务完成。我们下期再见。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/558605
推荐阅读
相关标签
  

闽ICP备14008679号