在某段时间内找出连续15天消费或登录的会员
程序员文章站
2022-07-16 13:01:23
...
在某段时间内找出连续15天消费或登录的会员
使用标准SQL进行开发
数据库:postgresql
获取到人到天的数据明细并进行rank() over()进行排序
销售明细表
select * from ly_temp.temp_wang_20200331_user_all limit 111
数据实例:
获取时间明细并进行rank() over()进行排序
时间维表
select * from ly_temp.temp_wang_20200331_dim_date order by 1 limit 111
数据实例:
生成结果数据
将两个表的数据按时间维度进行关联,销售明细中的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
生成结果:
如有更好的解决方法,请大胆的说出你的思路,我来实现
上一篇: 如何使用命令行执行java程序
下一篇: Linux命令行大全