欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在某段时间内找出连续15天消费或登录的会员

程序员文章站 2022-07-16 13:01:23
...

使用标准SQL进行开发

	数据库:postgresql

获取到人到天的数据明细并进行rank() over()进行排序

销售明细表

	select * from ly_temp.temp_wang_20200331_user_all limit 111

数据实例:
在某段时间内找出连续15天消费或登录的会员

获取时间明细并进行rank() over()进行排序

时间维表

select * from ly_temp.temp_wang_20200331_dim_date order by 1 limit 111

数据实例:
在某段时间内找出连续15天消费或登录的会员

生成结果数据

将两个表的数据按时间维度进行关联,销售明细中的rank与时间维表中的rank进行相减,同一会员rank相减数据一样的即为连续数据
最终结果

	select user_id,rank,count(sold_date) count_rank 
	from (
		select user_id,sold_date,sold_rank,rank_c_day,sold_rank-rank_c_day rank
		from ly_temp.temp_wang_20200331_user_all a
		join ly_temp.temp_wang_20200331_dim_date b on a.sold_date = b.c_day
		--where user_id = 2770186 order by 2
	) a 
	group by user_id,rank
	having count(sold_date) >= 15
	order by 3 desc 

生成结果:
在某段时间内找出连续15天消费或登录的会员
如有更好的解决方法,请大胆的说出你的思路,我来实现
在某段时间内找出连续15天消费或登录的会员

相关标签: Databases sql