欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

浅析row_number()函数【HQL】

程序员文章站 2022-07-13 11:10:49
...

语法格式:row_number() over(partition by 分组列 order by 排序列 desc)

row_number() over()分组排序功能:

在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、  order by 的执行。


说不如来个实例:

创表

create table t1(id int,name String,class String,score int) 
row format delimited fields terminated by "," ;

加载数据

浅析row_number()函数【HQL】

load data local inpath "/root/t1" into table t1;

实例一

对所有数据进行排序,无分组

select *,row_number() over(order by score desc) r from t1 

结果展示

浅析row_number()函数【HQL】


实例二

分组排序,根据class分组根据成绩排序

select id,
name,
class,
score,
row_number() over(partition by class order by score desc) rank 
from t1;

结果展示

浅析row_number()函数【HQL】


实例三

在实例二中已经做到了分组排序,不过对于我们的需求一般针对于前几位,也就是topN,如下:

select t.id,t.name,t.class,t.score from 
(select id,
name,
class,
score,
row_number() over(partition by class order by score desc) rank 
from t1) t where t.rank < 4;

结果展示

浅析row_number()函数【HQL】

希望这篇博客能让你对row_number()函数有一定的认识。欢迎交流~

相关标签: # bigdata_Hive