mysql - 选择 SUM 大于 X 的行

标签 mysql sql sum having-clause

我有这张 table

----------------
ID    | Duration 
----------------
1       10       
2       10      
3       10       

我想选择 sum(duration) 大于 15 的 id。换句话说......

-------------------------
ID    | Duration | Sum
-------------------------
1       10         10
2       10         20
3       10         30

Sum 在 ID 为 2 的行变得更细。我必须准确地选择这一行。

当然,我不能从存储过程中使用 SUM(),所以我肯定必须使用 JOIN,可能还有 HAVING 而不是 WHERE。问题是我总是得到错误的结果。

最佳答案

为此,您需要一个累积和,MySQL 不直接提供。您可以使用子查询来做到这一点。然后选择右行。

select id, duration, cumdur
from (select id, duration,
             (select sum(duration)
              from t t2
              where t2.duration < t.duration or
                    (t2.duration = t.duration and t2.id <= t.id)
             ) as cumdur
      from t
     ) t
where 15 between (cumdur - duration + 1) and cumdur

请注意,当多行具有相同的持续时间时,这按 id 排序。

关于mysql - 选择 SUM 大于 X 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668299/

相关文章:

android - 我如何单独访问从 MySQL 获取的所有 JSON 对象 - Android

php - 按 'most relevent' 排序结果 - MYSQL 和 PHP

matlab - 如何在 Matlab 中对矩阵中的列求和?

mysql - 在 mysql 中对结果求和,然后将结果除以 2

java - 正则表达式:完全匹配由定界符分割的字符串

两条 COUNT 语句的 MySQL 总和

c# - Entity Framework 中的联接表

php - mysql_query 到 PDO 和准备好的语句

android - SQLite:删除大量行的有效方法

java - MySQL 不使用 netbeans 将插入推送到数据库中