对postgresql表中的值求和并平衡记录

时间:2018-06-21 06:14:10

标签: sql postgresql

我有postgresql表,

value tag
1 Tag_A
-1 Tag_A
1 Tag_A
-1 Tag_B
-1 Tag_B
1 Tag_B
1 Tag_B

我们有一个包含两列valuetag的表。我们希望以每个标签的值总和为0的方式来安排表格。我们可以继续以任何顺序计算标签的总和。如果总和不为0,则最后的不平衡记录将添加到其他tag中。现在,我们将以相同的方式计算其他tag的总和。如果它是最后一个标签并且具有不平衡记录,则该不平衡记录将被删除。

在我们的Tag_A表中,

1 Tag_A
-1 Tag_A

为0,但是第三个1 Tag_A使Tag_A不平衡。因此,首先,我们将该记录添加到Tag_B中(没有内部顺序。它可能出现在任何地方)。修改后的表格应该看起来像

value tag
1 Tag_A
-1 Tag_A
-1 Tag_B
-1 Tag_B
1 Tag_B
1 Tag_B
1 Tag_B

在上表中,Tag_A是完全平衡的,因为值的总和为零。但是在Tag_B中,

-1 Tag_B
-1 Tag_B
1 Tag_B
1 Tag_B

为0,但最终记录1 Tag_B使Tag_B不平衡。没有其他标签可以添加此记录。因此,我们将删除剩余的记录。决赛桌的样子,

value tag
1 Tag_A
-1 Tag_A
-1 Tag_B
-1 Tag_B
1 Tag_B
1 Tag_B
1 Tag_B

我正在寻找SQL解决方案。推荐的方法是什么?

我可以找到特定表的值之和

SELECT COUNT(value)
FROM foo LIKE 'Tag_A';

0 个答案:

没有答案