【发布时间】:2018-05-18 09:10:14
【问题描述】:
在 SQL 方面需要帮助:
我有一个包含以下列的数据:
- 物品编号
- 用户ID
每一行表示某个用户购买了某些商品。 示例:
ItemId UserId
200 user1
200 user3
200 user4
300 user5
300 user3
对于每一个我想计算如下输出表:
- users(i) : 购买 i 的用户数
- users(j) : 购买 j 的用户数
- users(i, j) : 同时购买 i 和 j 的用户数
- users(i, ~j) : 购买 i 但未购买 j 的用户数
- users(~i, j) : 购买 j 但未购买 i 的用户数
输出示例(来自上面的示例):
i_itemId j_itemId users(i) users(j) users(i,j) users(i,~j) users(~i, j)
200 200 3 3 3 0 0
200 300 3 2 1 2 1
300 300 2 2 2 0 0
300 200 3 2 1 1 2
注意:
- 数据表很大 (11 GB),位于云端。我有一个可以使用的 SQL 框架。所以我无法下载文件并运行python(例如) 所以解决方案必须以高效的方式用 SQL 编写
- 解决方案不必是一条 SQL 语句。
- 我正在寻找一种有效的解决方案
- 我们可以假设这是一个关键
- 如果有人对这里的问题标题有更好的选择,我会很高兴更新它:)
【问题讨论】:
-
能否请您对 i & J 的数据进行抽样以便快速查看。
-
说明并使用您正在使用的 SQL 语言/环境的标签
-
我举了一个小例子@RajatJaiswal
-
如果用户不止一次购买了一件商品怎么办?这算作一次还是实际购买的次数?
-
您使用的是哪个DBMS product? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签
postgresql、oracle、sql-server、db2、...
标签: sql join count union intersection