统计会员半年复购率的问题(7天、15天、30天)
order 订单表 字段 id order_no(订单编号) business_id(商户ID) user_id(会员ID)money(消费金额)
user 会员表 id name 会员名称
business 商户表 id name 商户名称
基数:200个商户 一个商户可能有200个顾客
前提:会员购买过一次,第二次购买就算复购
问题:有什么好的设计方案和想法
目前我所想到的方法:
新建一张表,存商户和会员的关系
re_business_user
business_id | user_id | number | money | date | created_at |
---|---|---|---|---|---|
商户ID | 用户ID | 购买次数 | 购买金额 | 时间(2018-05-11) | 创建时间 |
每天用户在某个商户购买商品时查询一下关系表(re_business_user)数据是否存在(where 条件中加上date等于当前的时间2018-05-11),不存在新增一天记录,存在则更新购买次数+1和购买金额增加
这样设计我就可以很快的计算出7天复购率,15天复购率,30天复购率
这样设计会造成整张表数据量过大,一个月大概会有120W数据(20020030)
各位大佬有什么好的想法可以解决这个问题吗?谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
咳咳,先个人觉得 120w 并不大(习惯吐槽)。然后你既然是分段的,那不若直接建立索引就好了。当然,如果说优化,确实是建立新的一个表记录会比较好些。
其实我个人理解,数据库的使用就两种情况,一种用空间换时间,另一种自然是用时间换空间。是我的话,个人会选择只是优化表的索引,然后再进行查询就好,考虑到你做的复购率的调查频率不会很高,用时间作为代价运作也是可以的。