标签:
Hive在0.11.0版本开始加入了row_number、rank、dense_rank分析函数,可以查询分组排序后的top值
hive> create table t(name string, sub string, score int) row format delimited fields terminated by ‘\t‘;a chinese 98a english 90d chinese 88c english 82c math 98b math 89b chinese 79z english 90z math 89z chinese 80e math 99e english 87d english 90hive (test)> select *, row_number() over (partition by sub order by score) as od from t; 
hive (test)> select *, rank() over (partition by sub order by score) as od from t; 
hive (test)> select *, dense_rank() over (partition by sub order by score desc) from t;
select * from (select *, row_number() over (partition by sub order by score desc) as od from t ) t where od<=3;hive (test)> select od from (select *, row_number() over (partition by sub order by score desc) as od from t ) t where sub=‘chinese‘ and score=80;hive (test)> select * from (select *, row_number() over () as rn from t) t1 where rn between 1 and 5;
标签:
原文地址:http://www.cnblogs.com/lishouguang/p/4560837.html