查询总和

时间:2011-02-14 05:16:14

标签: sql

a带有

的表格
id   desc   total
1   baskets 25
2   baskets 15
3   baskets 75
4   noodles 10

我想询问带有输出的查询,其总和是40 ??

输出如:

id   desc   total
1   baskets 25
2   baskets 15

5 个答案:

答案 0 :(得分:1)

不太确定你想要什么,但这可能会让你开始

SELECT `desc`, SUM(Total) Total
FROM TableName
GROUP BY `desc`
HAVING SUM(Total) = 40

答案 1 :(得分:1)

我相信这会为您提供所需结果的列表,但不会显示您的示例数据集,因为示例数据集中的任何内容都不能提供总和为40.

SELECT id, desc, total 
FROM mytable 
WHERE desc IN (
  SELECT desc 
  FROM mytable 
  GROUP BY desc 
  HAVING SUM(total) = 40
)

答案 2 :(得分:1)

Select Desc,SUM(Total) as SumTotal
from Table
group by desc
having SUM(Total)  > = 40

答案 3 :(得分:1)

通过阅读您的问题,听起来您希望查询返回表示特定目标值且具有相同描述的任何和的子集。

没有简单的方法可以做到这一点。这会迁移到算法领域。

假设我在你所追求的是正确的,分组和聚合函数将无法解决你的问题。 SQL无法指示应该对数据子集执行查询,直到它耗尽所有可能的排列并找到符合您要求的Sums。

您必须将算法混合到您的sql ...即存储过程。

或者只是从数据库中获取符合desc的所有数据,然后在代码中对其执行算法。

我记得有一个CS算法类,我知道这是一个已知的问题:

我相信您可以调整此算法的工作版本来解决您的问题

http://en.wikipedia.org/wiki/Subset_sum_problem

答案 4 :(得分:0)

select desc 
from (select desc, sum(total) as ct group by desc)