广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    hive sum函数的顶级应用(配合开窗函数OVER)

    来源:网络收集  点击:  时间:2024-02-22
    【导读】:
    在我们基本的认识中,sum函数都是用来求和的,没错,sum就是用来求和的,但除了对整列求和外,你还知道hive的哪些特殊的应用呢,下面小编就为您扒一扒hive中sum的高级顶级应用。工具/原料moreHADOOPHIVE\CRT方法/步骤1/7分步阅读

    首先去下载我准备的数据 http://pan.baidu.com/s/1bns3wwJ

    部分数据示例如下:

    2/7

    下载后建表并导入数据,我的数据库为tmp,可根据你的实际情况自行修改create table tmp.hive_sum (id string COMMENT 会员ID,bank_name string COMMENT 银行名称,create_time string COMMENT 交易时间,amount double COMMENT 交易金额) COMMENT hive_sum顶级应用ROW FORMAT DELIMITED FIELDS TERMINATED BY \tLINES TERMINATED BY \n;load data local inpath /data/tmp/tqc/hive_sum.txt overwrite into table tmp.hive_sum;

    3/7

    每条记录增加此会员的消费总额,用到开窗函数over

    select id,bank_name,create_time,amount,sum(amount) over(partition by id) amount_allfrom tmp.hive_sumorder by id,bank_name,create_time;

    部分结果如下:

    4/7

    如果想按会员id,银行查询历史消费信息,只需在开窗函数over里的partition部分增加bank_name字段即可,代码如下

    select id,bank_name,create_time,amount,sum(amount) over(partition by id,bank_name order by create_time asc ) amount_allfrom tmp.hive_sumorder by id,bank_name,create_time asc;

    注意:partition by 是分组用的,按谁进行分组统计,order by 不要省掉,否则会有麻烦, asc或者desc最好写上。between 2 preceding (是前两行) and 2 following (是后两行,没有就不出现)注意是分组后的前后两行哦

    效果:

    5/7

    按时间显示会员本次消费的上两次、下两次消费的和,也就是本次消费的前后两次消费总和,sql如下

    select id,create_time, amount,sum(amount) over(partition by id order by create_time asc rows between 2 preceding and 2 following ) amount_allfrom tmp.hive_sumorder by id, create_time asc;

    查询部分结果显示

    6/7

    求每个会员每个银行的消费总额,并单独一行显示此会员的消费总额

    select id,bank_name,sum(amount) amount_allfrom tmp.hive_sumgroup by id,bank_namewith rolluporder by id, bank_name desc ;

    显示效果如下:

    7/7

    hive sum求和的高级应用

    很多时候万恶的分析师在数据出完后,还要一条对每个会员消费总额或者什么什么什么的汇总,这时候你可能用的最多的是union all了吧,现在换个方法吧with rollup,你会有意想不到的惊喜。

    注意事项

    求和不要死板,要灵活运用

    开窗函数应该的地方很多,多数时候跟聚合函数一起使用

    函数
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_102393.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 17:21:55  耗时:0.028
    0.0281s