SQL根据时间范围查找组



我有一个包含以下列的表:

  • 采购_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函数来模拟它们。

相关内容

  • 没有找到相关文章

最新更新