row_number()开窗函数
其实就是给每个分组的数据,按照其排序的顺序,打上一个分组内的行号
比如说,有一个分组date = 20151001,里面有三条数据,1122,1121,1124,
那么对这个分组的每一行使用row_number()开窗函数以后,三行,依次会获得组内的行号
行号从1开始递增,比如1122 1,1121 2,1123 3
row_number()开窗函数的语法说明
首先可以,在SELECT查询时,使用row_number函数,其次,row_number()函数后面先跟上OVER关键字
然后括号中,是PARTITION BY,也就是说根据哪个字段进行分组
其次是可以用ORDER BY 进行组内排序,
然后row_number()就可以给每个组内的行,一个组内行号
row_number() OVER (PARTITION BY category ORDER BY revenue DESC) rank
DataFrame saleDF = hiveContext.sql("" + "SELECT product,category,revenue" + "FORM (" + "SELECT" + "project," + "category," + "revenue," + "row_number() OVER (PARTITION BY category ORDER BY revenue DESC) rank" + "FROM slaes" + ") tmp_sales" + "WHERE rank <=3");
//开窗函数的作用,其实就是,给每个分组的数据,按照排序顺序,打上分组内的行号