Mysql-范围内具有的子集查询的和



我有一个表,其中包含如下示例数据:

| ID |        A |   B |
-----------------------
|  1 |      100 | 100 |
|  2 |      200 |  80 |
|  3 |      500 |   0 |
|  4 |      800 |   0 |

目标是我想要一个SQL查询,我可以输入一个值并获取a和b之间的差之和的行,例如

示例1.
如果输入110
由于(100-100(+(200-80(=120和110<=,我将获得ID为2的前两行120

示例2.
如果输入150由于(100-100(+(200-80(+(500-0(=620和150&lt620

示例3。如果输入620
,由于(100-100(+(200-80(+(500-0(=620和620<=620

示例4.
如果输入1000
由于(100-100(+(200-80(+(500-0(+(800-0(=1420 AND 1000<=,我将得到id为2,3,4的行1420

我引用了来自的查询总和子集查询

答案很接近,但结果仍然不能满足我的设想。我可以知道有谁知道解决这个问题的声明是什么吗?

由于MySQL 8.0,您可以使用窗口函数来解决问题,例如:

select * from (
-- get rolling sum for columns A & B
select
id,
A,
B,
SUM(A-B) over(order by ID) as rsum
from test
) sums
-- filter rows by value
having rsum <= 620
;

示例

相关内容

  • 没有找到相关文章

最新更新