我目前遇到一个问题,我必须编写一个 SQL 查询来计算一对项目一起订购的次数。
我可以使用的桌子是这样的:
ORDER_ID | PRODUCT_ID | QUANTITY
1 1 10
1 2 20
1 3 10
2 1 10
2 2 20
3 3 50
4 2 10
我正在寻找编写一个 SQL 查询,该查询可以针对每对独特的项目计算它们一起订购的次数,并告诉我它们处于相同顺序时的数量。
结果表应如下所示:
PRODUCT_ID_1 | PRODUCT_ID_2 | NUM_JOINT_ORDERS | SUM_QUANTITY_1 | SUM_QUANTITY__2
1 2 2 20 40
1 3 1 10 10
2 3 1 20 10
一些可以利用的东西是:
- 有些订单仅包含 1 件商品,因此与计算成对关系无关(不确定如何排除这些,但可能先过滤它们是有意义的)
- 我们只需要在最终表中列出一次配对关系(所以可能是 WHERE PRODUCT_ID_1 < PRODUCT_ID_2)
这里有一个类似的帖子,虽然我重新发布了这个问题,因为
- 我真的很想知道最快的方法,因为我的原始表很大而且我的计算资源有限,并且
- 在这种情况下,我只有一个表,没有列出数字的表。