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が より大きいまで取得しようとしていますX。たとえば、この場合、X=7 の場合、SUM(days)=24 で最初の 3 行を取得します。

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 に答える