【问题标题】:How to query the relation of series of activities triggered by users from SQL or NoSQL?如何从 SQL 或 NoSQL 查询用户触发的一系列活动的关系?
【发布时间】:2019-08-23 07:08:18
【问题描述】:

这是我的表格,描述了用户在某个时间购买了一些商品。

time, user, item_id

我的数据:

100, u1, i1
150, u2, i2
200, u1, i2
300, u1, i3
450, u2, i5

我想要的结果是每个用户按时间购买的商品:

u1, [i1, i2, i3]
u2, [i2, i5]

是否有可以执行此操作的 SQL 查询?如果没有,是否有任何其他类型的数据库适合此要求?考虑到数据量可能很大,哪种方案的性能最好?

谢谢!

【问题讨论】:

  • 是的,SQL 数据库可以产生这些结果。如果没有具体说明,那么您的问题要么过于宽泛,要么您正在寻求建议——这都是关闭问题的原因。

标签: sql database select nosql time-series


【解决方案1】:

是的,有一些 SQL 查询可以做到这一点,例如在 MYSQL 中,您可以使用 GROUP_CONCAT 来满足您的要求。

SELECT USER, GROUP_CONCAT(DISTINCT item_id ORDER BY time SEPARATOR ',')
FROM Table 

【讨论】:

    【解决方案2】:

    如果使用 SQL SERVER(TSQL),请尝试此操作。

    SELECT [user],
        abc = 
        STUFF((SELECT   
                   ',' +item_id  
                FROM @tblName Where A.[user] = [user]
                FOR XML PATH('')), 1, 1, ''   
            )
    FROM @tblName A GROUP by [user]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      相关资源
      最近更新 更多