帮助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的量不是必需的。
抱歉我的英文。
答案 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);