根据其他列的总和返回列中的值

时间:2018-10-07 20:13:36

标签: sql

我有一张下表,想返回id列中的值,其中pay列中的值之和等于或大于3。

id         paid     
30          1    
20          0   
30          1    
40          1  
30          0     
30          1    
20          0   

因此,对于上面的表(订单),查询应该返回30,而不是20或40。我觉得这应该是一个简单的查询,并且尝试了以下操作,但没有用:

SELECT id FROM orders
GROUP BY id
HAVING SUM(status >= 3)

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

使用以下查询。在建立总和之前,您必须比较完整的总和而不是值。

SELECT id FROM orders GROUP by id HAVING SUM(paid) >= 3

我希望这会有所帮助。

答案 1 :(得分:0)

给出确切的数据库架构(如下):
enter image description here

您需要3的过滤器不会产生任何结果,因为没有ID具有3个“已付费”实例 但是,以下SQL代码可以正常工作并产生结果:

SELECT orders.myID
FROM orders
GROUP BY myID
HAVING SUM(paid >= 1)

enter image description here

您需要做的就是更改HAVING SUM(paid >= 1)以包括“已付费”实例的任何数量阈值

您没有在架构中给我们一个“状态”字段,但是考虑到您要查找的内容,提到的内容应该可以工作。

您可能包括引用数据库(mySQL,SQL Server,Oracle,Access等),整个架构,示例数据,您要完成的工作以及代码当前正在执行的任何错误消息,因此我们可以为您提供最佳答案。

但是,此方法应该对您有用:)如果不行,请通知我。