一尘不染

选择行,直到满足一列的总金额(mysql)

sql

我已经在SF中看到了这个问题,但是我是菜鸟,只是无法让我的头脑变得模糊。因此,如果您想重复,请原谅我。

我的样品表

--------------------------
ID | 供应商| 数量
--------------------------
1 1 2
2 1 2
3 2 5
4 3 2
5 1 3
6 2 4

我需要获取“ UNTIL”行,对于特定的供应商ID,“ QTY”的累计总数按降序等于或大于5。

在此示例中,对于供应商1,它将是ID为5和2的行。

    ID-唯一主键
    供应商-外键,还有另一张供应商信息表。
    数量-双倍

阅读 129

收藏
2021-03-10

共1个答案

一尘不染

这个怎么样?使用两个变量。

SQLFIDDLE演示

询问:

set @tot:=0;
set @sup:=0;

select x.id, x.supplier, x.ctot
from (
select id, supplier, qty,
@tot:= (case when @sup = supplier then
@tot + qty else qty end) as ctot,
@sup:=supplier
from demo
order by supplier asc, id desc) x
where x.ctot >=5
;

| ID | SUPPLIER | CTOT |
------------------------
|  2 |        1 |    5 |
|  1 |        1 |    7 |
|  3 |        2 |    5 |
2021-03-10