MySQL通过列的SUM选择LIMIT

时间:2014-04-14 16:34:38

标签: mysql sql

帮助SQL查询。

表:

  

id |率

     

1 | 15

     

2 | 15

     

3 | 10

     

4 | 20

     

5 | 25

     

6 | 20

     

7 | 15

我需要在标准下进行选择 - SUM(速率)32的总和

我需要一个结论:

  

id |率

     

1 | 15

     

2 | 15

     

3 | 10

即在记录输出中累积的32的量不是必需的。

抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

请注意,在此上下文中,您所谓的id并不是真正的ID。这是一个rownumber。 Id不是用于排序,而是用于唯一标识行。这就是我在这个例子中将id改为nr的原因。

在此解决方案中,我假设nr对于此表是唯一的。不幸的是,MySQL中没有用于生成rownumbers的函数ROW_NUMBER()。

首先,我们有一个查询来计算每个row_nr的增量总和:

SELECT SUM(rate) FROM T WHERE nr <= t1.nr

然后我们找到最低的rownumber,其增量总和大于或等于32:

SELECT MIN(nr) FROM
(SELECT nr FROM T t1
WHERE (SELECT SUM(rate) FROM T WHERE nr <= t1.nr) >= 32
) t2

最后,我们选择rownumber小于或等于此数字的所有行。

SELECT * FROM T
WHERE nr <=
(SELECT MIN(nr) FROM
(SELECT nr FROM T t1
WHERE (SELECT SUM(rate) FROM T WHERE nr <= t1.nr) >= 32
) t2);

http://sqlfiddle.com/#!2/9b60a/14