SparkSQL开窗函数

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");
//开窗函数的作用,其实就是,给每个分组的数据,按照排序顺序,打上分组内的行号
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值