Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在postgresql中检查表中的条目_Sql_Postgresql - Fatal编程技术网

在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是否正确?