在postgresql中检查表中的条目
在我的在postgresql中检查表中的条目,sql,postgresql,Sql,Postgresql,在我的postgresql表中,有四列inc\u id,expense\u grp,money,year货币为1或-1 inc_id expense_grp money year 100 grocery 1 2017 200 food -1 2017 300 grocery -1 2018 400 food 1 2018 500 grocery -1 2017 600 food 1 2017 700 grocery -1 2018 800 food 1 2018 900 cloths 1 201
postgresql
表中,有四列inc\u id
,expense\u grp
,money
,year
<代码>货币为1或-1
inc_id expense_grp money year
100 grocery 1 2017
200 food -1 2017
300 grocery -1 2018
400 food 1 2018
500 grocery -1 2017
600 food 1 2017
700 grocery -1 2018
800 food 1 2018
900 cloths 1 2018
1000 food -1 2018
现在,我们需要找到特定年中费用的金额
例如,
例1:
货币
2017年费用
杂货
总额为(1+(-1))=0
例2:-
货币
2018年费用
杂货
总额为(-1)+-1)
现在,ex1是平衡的,因为sum是0,但是ex2不是平衡的,因为sum是-2。如果我们想使ex2平衡,那么我们必须从表中删除这两个条目。要使其平衡,我们必须使总和为0或删除条目
并非总是需要删除所有条目。假设,如果sum类似于(-1)+1+(-1))=-1,那么我们可以删除带有-1的条目,因此目标是使sum为0。有两个带有-1的条目,因此我们可以按任意顺序删除。我们可以随机选择1-1并删除它
我正在寻找两个解决方案查询,如
SELECT*FROM dataset(将在此处添加解决方案查询)
它将仅显示expense\u grp
的条目,其中金额在年度中不平衡
它应该回来
inc_id expense_grp money year
300 grocery -1 2018
400 food 1 2018
700 grocery -1 2018
800 food 1 2018
900 cloths 1 2018
1000 food -1 2018
从数据集中选择*(将在此处添加解决方案查询)
它将显示执行删除操作后的平衡数据
inc_id expense_grp money year
100 grocery 1 2017
200 food -1 2017
400 food 1 2018
500 grocery -1 2017
600 food 1 2017
900 cloths 1 2018
1000 food -1 2018
注:-我们已删除了2018年800食品的条目,以使2018年食品的费用平衡
还从表中删除了300杂货店-2018年1月
和700杂货店-2018年1月
,因为总和为-2
我们必须考虑的是,在删除一行之前,我们必须查看它是否可以添加到其他不平衡的<代码> ExpESESEGRP<代码>中,以使它在同一个代码<年> /代码>中得到平衡。< /P>
因此,基本上我想要的是,找到年和费用组的所有组合,其中的金额!=0删除导致“不平衡”的任意记录,直到金额=0为止
实现这一目标的推荐方法是什么?我不清楚您在结果集中寻找什么。请检查表输出。我已经给出了我想要的输出。规则我不清楚。我的意思是最简单的事情就是删除所有行。那么一切(什么都不是)肯定会平衡。但我不认为你真的想要那样。那么,哪些行可以被删除的规则是什么呢?我们如何确定哪一行导致了“不平衡和”?在您的示例中(-1)+1+(-1))=-1有两个候选项。因此,您需要的是:找到年和费用组的所有组合,其中金额!=0删除导致“不平衡”的任意记录,直到金额==0是否正确?