HIVE SQL ——订单消费天数累加

数据: user:用户,num:下单次数,date消费日期
user  num    date        
A      1   20200206
A      2   20200517
A      2   20200530
A      4   20200611
A      6   20201111
B      1   20201113
B      5   20201210
B      3   20210222
需求:按照一个人的订单日期从1开始排序累加,并计算下一笔订单距离上一笔订单间隔日期,如果间隔日期超过一个月则消费次数需要重新排序累加,sql实现
select  -- 组内重排序
	user,
	num,
	date,
	sum(num) over (partiton by user,acc order by date asc) order_num
from 
	(
	select  -- 按照用户分组,订单日期排序 累加发生事件的次数
		user,
		num,
		date,
		sum(tag1) over(partition by user order by date asc) acc
	from
		(-- 步骤二 判断如果当前行与上一行相差大于30则计为1 否则即为0
		select 
			user,
			num,
			date,
			case when date_diff(date,dt) >30 then 1 else 0 end tag1
		from 	
			(--步骤一 当前行减去上一行 
			select 
				user,
				num,
				date,
				lag(date,1,null) over(partition by user order by date asc) dt
			from 
				table_A
			)A
		)B	
	)C	
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值