hive练习题(一)

hive练习题(一)

数据表ods_sales_orders前10列的数据
在这里插入图片描述

题目:计算每个用户截止到每月为止的最大交易金额和累计到该月的总交易金额

题干分解:每个用户、截止到每月为止的最大交易金额和累计总交易金额

第一步:计算每位用户在每月消费的总金额

create table temp as 
select customer_key,DATE_FORMAT(create_date,'YYYY-MM') AS umonth,sum(unit_price) AS usum FROM ods_sales_orders GROUP BY customer_key,DATE_FORMAT(create_date,'YYYY-MM');

第二步:计算截止到每月为止的最大交易金额和累计总交易金额

知识点:窗口函数

SELECT customer_key,umonth,ucount,
MAX(usum) over(PARTITION BY customer_key ORDER BY umonth ROWS 
BETWEEN unbounded preceding AND current ROW) AS current_max,
SUM(usum) over(PARTITION BY customer_key ORDER BY umonth ROWS 
BETWEEN unbounded preceding AND current ROW) AS current_sum
FROM temp LIMIT 10;

在这里插入图片描述

over中的partition by customer_key order by umonth 针对客户编号这一组按照月份进行排序,ROWS
BETWEEN unbounded preceding AND current ROW指的是按照在当前行不限定的往前处理,也就是处理当前以及之前所有行的sum(),max(),比如客户编号为1358999只在2月份和4月份消费,那么累计到4月份的消费金额就是2月份消费金额加上4月份的消费金额。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值