获取所有行直到 SUM(列)大于 X 的 MySQL 查询

标签 mysql sql

我有以下数据

user_id   days   date
88        2      2013-08-25
88        4      2013-08-23
88        18     2013-08-5
88        1      2013-08-4
88        2      2013-08-2
73        11     2013-08-2
299       4      2013-08-2
12        983    2013-08-2

我正在尝试获取特定 user_id 的所有最近行(按 DATE desc 排序),直到 days 列的总和大于 X 。例如,在这种情况下,如果 X=7,我将获得 SUM(days)=24 的前三行。

最佳答案

试试这个。在这里,您将使用一个局部变量来计算子查询中的总和。

select
    user_id,
    days,
    date
from
    (
    select
        user_id,
        days,
        date,
        @sum_days := @sum_days + days as sum_days
    from
        myTable
    order by
        date desc
    ) t
    cross join (select @sum_days := 0) const -- resetting your @sum_days var.
where
    sum_days < X -- fill a number in for X here.

关于获取所有行直到 SUM(列)大于 X 的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445333/

相关文章:

MySQL 5.5 - 如何从具有重复字符串的字段中提取部分文本?

php - 搜索匹配 'meta_value' 和 'post_id' 时获取 'meta_key' , 'meta_value' 组合

php - 如何编写php->mysql查询?

sql - 在 SQL 中,如何形成 XML 输出,其中属性值之一为 XML,无需 <,> 编码

sql - 外部数据包装器 "postgres_fdw"不存在(即使存在)

php - 在 MYSQL 数据库中存储和查询主题标签的最有效方法是什么

java - (JDBC) 带有 if 语句和多个条件的 Mysql 查询

sql - 使用 SSIS 将 Access 数据库传输到 SQL Server

mysql - 如何在 SQL 中(递归地)确定等效组?

MySQL: Order by with joins and group by