SQL根据时间范围查找组

时间:2018-07-26 09:32:28

标签: sql amazon-web-services amazon-athena presto

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

  • Purchase_ID(varchar)
  • User_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

1 个答案:

答案 0 :(得分:0)

哪个数据库?

您需要了解Unix时间是如何工作的,以便可以使用它来解决您感兴趣的两个小时范围。

查找数据库的OLAP函数。如果可用,LAG和LEAD功能可能会为您提供帮助。如果您的实现中不提供这些功能,则可以使用更常见的OLAP函数进行仿真。