【发布时间】:2019-01-03 06:09:44
【问题描述】:
我有一个包含以下列的表格:
- Purchase_ID (varchar)
- User_ID (varchar)
- Purchase_time (bigint) - 在 UNIX 中
与其他一些不太相关的。
有超过 6 万个唯一购买 ID。 所有不同的 User_ID 至少出现 4 次(通常更多) - 这意味着这些用户至少进行了 4 次购买。
我想做的是找到在相似时间范围内进行购买的用户 ID 组。 例如,以用户 A 为例,在用户 A 每次购买前后一小时内找到所有其他已购买的用户,然后将这两个用户,重复该过程,直到达到可能的最大用户数一起购买。 连接群内所有成员的购买量不少于3次。
我意识到这有点复杂,可能会导致许多不同的表格,但我不知道如何着手解决这个问题,因此我们将不胜感激。
感谢所有帮助者,祝您有愉快的一天!
编辑:
就数据库标签而言,我使用的是 AWS Athena,我不确定它支持哪些功能,因为我对它完全陌生。
样本数据:
User ID Time User_A 1521441850 User_B 1521441930 User_C 1521500000 User_D 1521530023 User_E 1521441900 User_F 1521000000 User_A 1521445850 User_B 1521445980 User_C 1521510000 User_D 1521520055 User_E 1521445100 User_F 1521000010 User_A 1521449850 User_B 1521445030 User_C 1521520000 User_D 1521500033 User_E 1521441910 User_F 1521000020 User_A 1521453850 User_B 1521441920 User_C 1521530000 User_D 1521540000 User_E 1521400000 User_F 1521000030
- 期望的结果: 我对此很灵活,但基本上可能是这样的:
表 1
Group1 Group2 User_A User_C User_B User_D User_E
表 2
Group Name Amount of Users Amount of Purchases Linked Group1 3 11 Group2 2 8
【问题讨论】:
-
样本数据、所需结果和数据库标签都会有所帮助。
-
答案在很大程度上是特定于数据库的,但它非常简单。所以,有两个问题:1)什么是数据库? 2) 你能发布你的表的索引吗?
-
问题陈述是递归的。 AFAIK,Presto(Athena 在后台)不支持递归构造。
标签: sql amazon-web-services amazon-athena presto