我正在使用SQLite3,我有以下设置。我有一个表格,其组织如下:
ID k count
1 a 1
1 b 2
1 c 5
2 a 3
2 b 4
3 a 2
我想要做的是计算每个ID共享k的计数列之间的元素明智的产品和。
因此,例如,在1和2之间,元素明智的总和为SUM (1*3 + 2*4)
,因为它们共享a
和b
键。同样,在2到3之间,它将是SUM(3*2)
,因为它们只共享“a”键。
这是因为我必须为每个ID对创建它,即(1, 2), (2, 3), (1, 3)
,我不知道如何在SQL中执行此操作。
答案 0 :(得分:1)
您可以使用INNER JOIN
查找所有匹配对:
SELECT t1.ID AS t1ID, t2.ID AS t2ID,
SUM(t1.count*t2.count) AS s
FROM mytable AS t1
INNER JOIN mytable AS t2
ON t1.ID < t2.ID AND t1.k = t2.k
GROUP BY t1.ID, t2.ID
使用GROUP BY t1.ID, t2.ID
,我们可以轻松计算每对的元素和。
答案 1 :(得分:0)
@Luca而不是Generating as pairs((1,2),(2,3),(1,3)),你可以生成as(1,2,3 ...)。你可以使用子查询inorder找到合适的条件并产生所需的输出。