我有一个包含以下列的表:
- 采购_ID(varchar(
- 用户ID(varchar(
- Purchase_time(bigint(-在UNIX中
与其他一些不太相关的。
有超过6万个唯一的购买ID。所有不同的User_ID至少出现4次(通常更多(,这意味着这些用户至少购买了4次。
我想做的是找到在类似时间范围内进行购买的User_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
哪个数据库?
你需要知道Unix时间是如何工作的,这样你就可以用它来解决你感兴趣的两小时范围
查找数据库的OLAP函数。如果可用,LAG和LEAD功能可能会对您有所帮助。如果这些OLAP函数在您的实现中不可用,则可以使用更常见的OLAP函数来模拟它们。