在mysql中实现over partiton by,进行分组排序取topN
https://georgedage./article/details/103557651
使用mysql进行分区中的topN,但是在生产中我们一般使用sparksql进行分区中的topN计算。那么如果针对于HQL那么怎么进行写呢?
【友情提示,使用的hive,可以将hql语句放在spark上进行运行试验,这里只针对于hql语句的编写!】
创表
create table t1(id int,name String,class String,score int) row format delimited fields terminated by "," ;
加载数据
load data local inpath "/root/t1" into table t1;
HQL语句
【友情补充】如果不太熟悉,我在针对row_number()写了一篇小博客
浅析row_number()函数【HQL】https://georgedage./article/details/103564049
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;