我有postgresql表,
value tag
1 Tag_A
-1 Tag_A
1 Tag_A
-1 Tag_B
-1 Tag_B
1 Tag_B
1 Tag_B
我们有一个包含两列value
和tag
的表。我们希望以每个标签的值总和为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';