如何在MySQL中查询累计金额首次超过指定值的第一条记录
MySQL查询实现方案
方案1:MySQL 8.0+(窗口函数实现,推荐)
SELECT ID, Amount, Date FROM ( SELECT ID, Amount, Date, SUM(Amount) OVER (ORDER BY Date ASC) AS cumulative_amount FROM 你的表名 -- 替换为实际数据表名称 ) AS temp WHERE cumulative_amount >= 目标金额 -- 替换为你要查询的指定数值 ORDER BY Date ASC LIMIT 1;
方案2:MySQL 5.x(用户变量实现,兼容低版本)
SELECT ID, Amount, Date FROM ( SELECT ID, Amount, Date, @cumulative := @cumulative + Amount AS cumulative_amount FROM 你的表名, (SELECT @cumulative := 0) AS init -- 替换为实际数据表名称 ORDER BY Date ASC ) AS temp WHERE cumulative_amount >= 目标金额 -- 替换为你要查询的指定数值 ORDER BY Date ASC LIMIT 1;
逻辑说明
- 内层查询先按日期升序排序,逐行累加Amount得到累计金额
- 外层筛选出累计金额大于等于指定数值的所有记录
- 按日期升序排序后取第一条,就是累计金额首次超过指定数值的对应记录,完全匹配给出的规则示例。
内容的提问来源于stack exchange,提问作者seedg
相关产品推荐
相关产品推荐

