手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

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

时间:2024-10-12 10:32:53

1、首先去下载我准备的数据 http://pan.baidu.com/s/1bns3wwJ部分数据示例如下:

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

2、下载后建表并导入数据,我的数据库为tmp,可根据你的实际情况自行修改create table tmp.hi即枢潋雳ve_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 '\t'LINES TERMINATED BY '\n';load data local inpath '/data/tmp/tqc/hive_sum.txt' overwrite into table tmp.hive_sum;

3、每条记录增加此会员的消费总额,用到开窗函数overselect id,bank_name,create_time,amount,sum(amount) over(partition by id) amount_allfrom tmp.hive_sumorder by id,bank_name,create_time;部分结果如下:

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

4、如果想按会员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 (是后两行,没有就不出现)注意是分组后的前后两行哦效果:

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

5、按时间显示会员本次消费的上两次、下两次消费的和,也就是本次消费的前后两次消费总和,sql如下select id,cr髫潋啜缅eate_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;查询部分结果显示

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

6、求每个会员每个银行的消费总额,并单独一行显示此会员的消费总额select id,bank_name,sum(amount) amount_allfrom tmp.hive_sumgroup by id,bank_namewith rolluporder by id, bank_name desc ;显示效果如下:

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

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

© 手抄报圈