我目前遇到的问题是,我必须编写一个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
要利用的一些事情是:
有一篇类似的帖子here,虽然我已将该问题重新发布,因为
答案 0 :(得分:2)
您可以使用以下方法,它会显示上面显示的结果。
select
PRODUCT1, PRODUCT2, count(*), sum(QUANTITY1), sum(QUANTITY2)
from (
select
T1.PRODUCT_ID AS PRODUCT1,
T2.PRODUCT_ID AS PRODUCT2,
T1.QUANTITY AS QUANTITY1,
T2.QUANTITY AS QUANTITY2
from TABLE as T1, TABLE as T2
where T1.ORDER_ID=T2.ORDER_ID
and T1.PRODUCT_ID<T2.PRODUCT_ID
)
group by PRODUCT1, PRODUCT2