sqllite选择行,直到满足一列的总金额

Fal*_*ity 1 sqlite

我已经看到与mysql类似的问题,但是我几乎找不到与sqllite有关的任何解决方案。

我的样品台

-----------------------------
ID   | Product Name   | Price
-----------------------------
1            A           2
2            B           2
3            C           1
4            D           3
5            E           2
Run Code Online (Sandbox Code Playgroud)

在这里,我需要获取行,直到价格列的总数按升序等于或小于5。

Edp*_*per 5

您可以使用Product ID和来进行运行总计,ORDER BY Product ID如下所示:

SELECT p1.ID, p1.ProductName, p1.Price,
(SELECT SUM(p2.Price) FROM Products p2 WHERE p1.ID >= p2.ID  ORDER BY p2.ID ) as RunningTotal
FROM Products p1
WHERE RunningTotal <= 5
ORDER BY p1.ID
Run Code Online (Sandbox Code Playgroud)

参见小提琴演示

或使用下面的PriceORDER BY Price类似:

SELECT p1.ID, p1.ProductName, p1.Price, 
(SELECT SUM(p2.Price) FROM Products p2 WHERE p1.Price >=  p2.Price ORDER BY Price ) 
as RunningTotal
FROM Products p1
WHERE RunningTotal <= 5
ORDER BY p1.Price;
Run Code Online (Sandbox Code Playgroud)

参见第二小提琴演示