首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

hive中分组取前N个值的兑现

2012-06-26 
hive中分组取前N个值的实现需求:假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前2名数据如下表:

hive中分组取前N个值的实现

需求:假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前2名

数据如下表:

id????? clsno?? score

1?????? c1????? 20
2?????? c1????? 30
3?????? c1????? 40
4?????? c1????? 50
5?????? c1????? 80
11????? c1????? 80
12????? c1????? 60
6?????? c2????? 20
7?????? c2????? 30
8?????? c2????? 40
9?????? c2????? 50
10????? c2????? 80
13????? c1????? 90

?

在sql中可以实现的方式是:SELECT * FROM table AS T WHERE ID IN(SELECT TOP 2 ID FROM table WHERE clsno=T.clsno ORDER BY score DESC)

?

在hive中没有in这个函数,所以需要别的方式实现。

定义一个rank函数:

?

取各科成绩中rank值小于2的记录即可。

?

英文原文链接:http://www.findnwrite.com/musings/extract-top-n-records-in-each-group-in-hadoophive/

热点排行