1

我有以下数据

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

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

4

1 回答 1

5

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

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.
于 2013-08-26T13:33:28.253 回答